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

时间:2015-03-08 06:54:51

标签: java string bufferedreader filereader

  


  李博
  布莱恩
  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

4 个答案:

答案 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并中断。比输出。