![](/img/trans.png)
[英]Why does the equals() method return false when the two objects are identical?
[英]Why does .equals returns false while comapring identical strings?
我试图比较一个字符串,它是读取文件的一部分(文件:读取文件示例
1.Dog
2.Cat
3.Bird
4),对于用户的给定输入,使用 .equals。 它总是返回 false,即使我复制粘贴打印的字符串。
编码:
File TF = new File("Textfile.txt");Scanner read = new Scanner(TF);
String text="";
while(read.hasNextLine()) {
text = text.concat(read.nextLine()+"\n");
}
int x;
int y;
char a;
char b;
Random dice = new Random();
x=dice.nextInt(3)+1;
y=x+1;
a=(char)(x+48);
b=(char)(y+48);
int first = text.indexOf(a);
int second = text.indexOf(b);
String some=text.substring(first,second);
Scanner write = new Scanner(System.in);
String writein=write.nextLine();
System.out.println(writein.equals(some))
text.substring(first,second)
返回一个包含尾随换行符的字符串,例如“1.Dog\\n”,而输入的字符串则不会。 要修复它,您可以修剪从文件中读取的行:
String some=text.substring(first,second).trim();
变量some
以\\n
结尾(或者在 Windows 上可能是\\r\\n
)。 writein
没有尾随换行符。 比较字符串时,每个字符都必须相等(事实并非如此)。
您有多种可能的解决方案来解决您的问题。 其中之一是在您的字符串上调用stripTrailing()
(Java >= 11)。
System.out.println(writein.equals(some.stripTrailing()))
或者您可以手动减少字符串的长度
String some=text.substring(first, second - 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.