为什么.equals返回false,而comspring返回相同的字符串



im试图比较String,它是读取文件的一部分(文件:读取文件示例

1.Dog
2.Cat
3.Bird

4( ,对用户给定的输入,使用.equals。它总是返回false,即使当我复制粘贴打印的String时也是如此。

代码:

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();

变量somen结尾(在Windows上可能以rn结尾(。另一个上的writein没有尾随换行符。在比较字符串时,每个字符都必须相等(事实并非如此(。

你有多种可能的解决方案来解决你的问题。其中之一是在字符串上调用stripTrailing()(Java>=11(。

System.out.println(writein.equals(some.stripTrailing()))

或者你可以手动减少字符串的长度

String some=text.substring(first, second - 1);

相关内容

  • 没有找到相关文章

最新更新