Java从文本(txt)文件中读取字符串

Java从文本(txt)文件中读取字符串,java,string,bufferedreader,filereader,Java,String,Bufferedreader,Filereader,杆 Rae 布莱恩 雪罗 Ric 基里托 Asuna 艾尔莎 阿库塔贝 西诺 我已将该列表保存在文本文件中。如果我输入Rod,它应该说“存在”,如果我输入了一个不在列表中的名称,它应该说“不存在”。但是在我的代码上发生的事情是,它每行读取文件,如果与字符串行不匹配,则打印“不存在”。 因此,如果我输入一个txt文件中不存在的名称,它将打印10行“不存在” 下面是我的代码: Scanner in = new Scanner(System.in); out.print("Enter name


Rae
布莱恩
雪罗
Ric
基里托
Asuna
艾尔莎
阿库塔贝
西诺

我已将该列表保存在文本文件中。如果我输入Rod,它应该说“存在”,如果我输入了一个不在列表中的名称,它应该说“不存在”。但是在我的代码上发生的事情是,它每行读取文件,如果与字符串行不匹配,则打印“不存在”。 因此,如果我输入一个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

不存在
不存在
不存在
不存在
存在


为什么我的程序在找到精确匹配之前要打印这么多不存在的

使用
布尔值来记住是否找到匹配项,并且只有在检查每个项目后并且只有在没有找到匹配项时才显示“不存在”。

使用
布尔值来记住是否找到匹配项,只有在检查每个项目后,并且只有在未找到匹配项的情况下,才显示“不存在”。

如果名称存在,则您正在
中断该循环,因此,如果循环未中断,则只应打印“不存在”消息:

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();

如果名称存在,您将
break
ing循环,因此,如果循环未中断,您应仅打印“notexists”消息:

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();

你就快到了。您只是在抢先打印错误消息。我还将使用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();

你就快到了。您只是在抢先打印错误消息。我还将使用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();
添加布尔值var default false,当存在时,将其设置为true并中断。而不是输出


添加布尔值var default false,当存在时,将其设置为true并中断。而不是输出。

从对数地平线xD很高兴你注意到,从对数地平线xD很高兴你注意到哦,我现在明白了。它的作用类似于一个开/关开关。谢谢,我现在明白了。它的作用类似于一个开/关开关。谢谢我还不熟悉Java,所以我不知道大多数术语,比如HashSet:(谢谢:)我还不熟悉Java,所以我不知道大多数术语,比如HashSet:(谢谢:)