java - 字符串比较导致不正确的结果
问题描述
我有一个写在文件中的路径 URL。我使用 Scanner 类记录该 URL 并将其输出到字符串变量“s”。然后,我使用 .equals() 方法将其与“gameDataFile”文件对象中的路径 URL 进行比较。结果是错误的,尽管它们与我的控制台中记录的字符串相同。这里发生了什么?
文件中的路径 URL:
src\gameData\character_data.csv
代码片段:
String s = in.next(); // in is a java.util.Scanner object
System.out.println(gameDataFile.getPath()); // gameDataFile is a java.io.File object
System.out.println(s);
System.out.println(s.equals(gameDataFile.getPath()));
控制台输出:
src\gameData\character_data.csv
src\gameData\character_data.csv
false
编辑:根据@MTilsted 的要求,以下代码片段
String s = in.next();
System.out.println("'" + gameDataFile.getPath() + "'");
System.out.println("'" + s + "'");
System.out.println(s.equals(gameDataFile.getPath()));
控制台输出结果:
'src\gameData\character_data.csv'
'
false
它似乎已将 URL 替换为一个单引号
解决方案
试试这个:
String s = in.next(); // in is a java.util.Scanner object
System.out.println("'" + gameDataFile.getPath() + "'"); // gameDataFile is a java.io.File object
System.out.println("'" + s + "'");
System.out.println(s.equals(gameDataFile.getPath()));
推荐阅读
- javascript - Fabric.js canvas.setHeigth或setWidth推送后如何设置div?
- vb.net - 使用变量名的字符串版本访问变量 - vb.net
- algorithm - 将车放在 $nxn$ 棋盘上的算法,以便它们准确攻击 $m$ 方格
- angular - 如何从 hyperledger-composer 应用程序的 Angular 前端获取当前参与者的 ID?
- android - 设计师编辑器不可用 Android studio
- android - 即使调用 asyncTask().execute().get() 也会触发 onPostExecute() 吗?
- powershell - PS版本2的powershell Get-Content -raw替代品
- html - HTML/CSS div 悬停时超出父 div
- javascript - 在 Observable 上使用 await 时,我应该使用什么来代替 toPromise()?
- node.js - 无法读取 cookie 中未定义的属性“程序”?