繁体   English   中英

为什么 .equals 在对相同字符串进行匹配时返回 false?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM