簡體   English   中英

Java從文本(txt)文件中讀取字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM