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();
变量some
以n
结尾(在Windows上可能以rn
结尾(。另一个上的writein
没有尾随换行符。在比较字符串时,每个字符都必须相等(事实并非如此(。
你有多种可能的解决方案来解决你的问题。其中之一是在字符串上调用stripTrailing()
(Java>=11(。
System.out.println(writein.equals(some.stripTrailing()))
或者你可以手动减少字符串的长度
String some=text.substring(first, second - 1);