[英]Java reading a string from a text(txt) file
竿
雷
布赖恩
白荣
里克
桐人
明日奈
艾尔莎
uta部
筱野
我已将该列表保存在文本文件中。 如果要输入Rod,则应输入“ Exists”,如果输入的名称不在列表中,则应输入“不存在”。 但是在我的代码上发生的事情是,它每行读取一个文件,如果与字符串行不匹配,则显示“不存在”。 因此,如果我输入的是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();
输出的示例如下:
名字= Kirito
不存在
不存在
不存在
不存在
存在
为什么我的程序打印出这么多在找到完全匹配之前Does not exist
?
使用boolean
来记住您是否找到了匹配项,并且仅在检查每个项目之后并且仅当您没有找到匹配项时才显示“不存在”。
你快到了 您只是抢先打印错误消息。 我也将使用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();
如果名称存在,则要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();
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();
添加一个布尔型默认值false,如果存在则将其设置为true并中断。 比输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.