棒
李博
布莱恩
Shiroe
里克
桐
奈
艾尔莎
Akutabe
志野
我将该列表保存在文本文件中。如果我要进入罗德,它应该说"存在"如果我输入一个不在列表中的名称,它应该说"不存在。"但是我的代码发生的是它读取文件每行并打印"不存在"如果它与字符串行不匹配。 因此,如果我要输入txt文件中不存在的名称,它将打印10"不存在"线。
这是我的代码:
Scanner in = new Scanner(System.in);
out.print("Enter name: ");
String name = in.nextLine();
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
String line;
while ((line = br.readLine()) != null) {
if (line.contains(name)) {
out.println("Exists");
break;
} else {
out.println("Does not exist");
}
}
br.close();
输出内容的一个例子是:
name = Kirito
不存在
不存在
不存在
不存在
存在
为什么我的程序在找到完全匹配之前会打印这么多Does not exist
?
答案 0 :(得分:4)
使用boolean
来记住您是否找到了匹配项,并显示"不存在"只有在检查完每件商品后才会找到匹配项。
答案 1 :(得分:2)
你快到了。您只是抢先打印错误消息。我也会使用equals代替contains并预先加载整个文件。 HashSet如果需要回答多个查询
Scanner in = new Scanner(System.in);
out.print("Enter name: ");
String name = in.nextLine();
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
String line;
boolean found = false;
while ((line = br.readLine()) != null) {
if (line.contains(name)) {
out.println("Exists");
found = true;
break;
}
}
if (!found) {
out.println("Does not exist");
}
br.close();
答案 2 :(得分:1)
如果名称存在,您将{{}} break
循环,因此您只应打印"不存在"如果循环没有中断,则会显示消息:
Scanner in = new Scanner(System.in);
out.print("Enter name: ");
String name = in.nextLine();
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
String line;
boolean nameFound = false;
while ((line = br.readLine()) != null) {
if (line.contains(name)) {
out.println("Exists");
nameFound = true;
break;
}
if (!nameFound) {
out.println("Does not exist");
}
br.close();
答案 3 :(得分:0)
PrintStream out = System.out;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
out.print("Enter name: ");
String name = in.readLine();
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
String line;
boolean ifexist = false;
while ((line = br.readLine()) != null) {
if (line.contains(name)) {
ifexist = true;
break;
}
}
if (ifexist) {
out.print("Exist");
} else {
out.println("Does not exist");
}
br.close();
添加布尔值var默认值false,当存在时将其设置为true并中断。比输出。