无法从文件中获取行以与代码中的字符串匹配
Can't get line from file to match up with string in code
基本上是在做一个学校作业的项目,它需要一个登录系统,它可以像我喜欢的那样基本,所以我只是将 usernames/passwords 存储在一个文本文件中。我已经编写了代码来逐行读取文件并将每一行存储在一个变量中,这一切都有效但是当我测试看我是否可以将它与字符串进行比较时,即使它们是相同的它似乎并不这么认为,我有 运行 其他测试来确保我的 if/else 陈述是正确的并且 运行 没有其他问题,我目前的理论是它与用户名和密码以“\n”存储,使它们出现在文本文件的不同行上。
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/Will/Desktop/UnPs.txt");
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
String passCheck = scan.nextLine();
if(passCheck == "test2,Test2") {
System.out.println("Test1");
}
else if(passCheck != "test2,Test2") {
System.out.println(passCheck);
System.out.println("not found");
}
}
}
运行 代码的输出是:
测试1,测试1
未找到
测试2,测试2
未找到
测试3,测试3
未找到
但在我的脑海中,当它到达文件的第二行时,它的 passCheck 值应该为“test2,Test2”。
如果您想查看用户名和密码是如何写入文件的,请询问,但正如我所说,我的理论是“\n”是相关的
您正在以错误的方式进行字符串相等性检查。
==
运算符检查对对象的引用是否相等。
更新代码
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/Will/Desktop/UnPs.txt");
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
String passCheck = scan.nextLine();
if(passCheck.equals("test2,Test2")) {
System.out.println("Test1");
}
else if(!passCheck.equals("test2,Test2")) {
System.out.println(passCheck);
System.out.println("not found");
}
}
}
要了解如何比较 Java 中的字符串,请参阅:
How do I compare strings in Java?
基本上是在做一个学校作业的项目,它需要一个登录系统,它可以像我喜欢的那样基本,所以我只是将 usernames/passwords 存储在一个文本文件中。我已经编写了代码来逐行读取文件并将每一行存储在一个变量中,这一切都有效但是当我测试看我是否可以将它与字符串进行比较时,即使它们是相同的它似乎并不这么认为,我有 运行 其他测试来确保我的 if/else 陈述是正确的并且 运行 没有其他问题,我目前的理论是它与用户名和密码以“\n”存储,使它们出现在文本文件的不同行上。
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/Will/Desktop/UnPs.txt");
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
String passCheck = scan.nextLine();
if(passCheck == "test2,Test2") {
System.out.println("Test1");
}
else if(passCheck != "test2,Test2") {
System.out.println(passCheck);
System.out.println("not found");
}
}
}
运行 代码的输出是:
测试1,测试1 未找到 测试2,测试2 未找到 测试3,测试3 未找到
但在我的脑海中,当它到达文件的第二行时,它的 passCheck 值应该为“test2,Test2”。 如果您想查看用户名和密码是如何写入文件的,请询问,但正如我所说,我的理论是“\n”是相关的
您正在以错误的方式进行字符串相等性检查。
==
运算符检查对对象的引用是否相等。
更新代码
public static void main(String[] args) throws IOException {
File file = new File("C:/Users/Will/Desktop/UnPs.txt");
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
String passCheck = scan.nextLine();
if(passCheck.equals("test2,Test2")) {
System.out.println("Test1");
}
else if(!passCheck.equals("test2,Test2")) {
System.out.println(passCheck);
System.out.println("not found");
}
}
}
要了解如何比较 Java 中的字符串,请参阅:
How do I compare strings in Java?