【问题标题】:Netbeans Java .append repeats output four timesNetbeans Java .append 重复输出四次
【发布时间】:2013-03-05 10:49:12
【问题描述】:

为什么当我在输入文本字段中输入你的名字时出现 4 次“我的名字是”

public void compareQuestion(){

字符串文件名 = 目录 + "memoryBank.txt";

      String line = null;

    try {

        FileReader fileReader = 
            new FileReader(fileName);

        // Always wrap FileReader in BufferedReader.
        BufferedReader bufferedReader = 
            new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null) {
            String[] parts = line.split(" - ");
            String subject = parts[0];
            String question = parts[1];
            String answer = parts[2];
            //if(input.equals(question) && !subject.equals(currentSubject)){ currentSubject = subject; }
           // if(input.equals(question) && subject.equals(currentSubject)){ Output.append(answer); }
            if(input.contains("what is your name")) { 
                Output.append("my name is"+ newline);
            }
        }   

        bufferedReader.close();         
    }
    catch(FileNotFoundException ex) {
        System.out.println(
            "Unable to open file '" + 
            fileName + "'");                
    }
    catch(IOException ex) {
        System.out.println(
            "Error reading file '" 
            + fileName + "'");
    }
}

【问题讨论】:

  • 如需更好的帮助,请考虑发布SSCCE
  • 我添加了一个SSCCE ...
  • 可以编译和运行一个简短的、自包含的、可编译的示例 (SSCCE),您提供的代码 sn-ps 并没有给出完整的图片问题可能是
  • 我提供的代码是您查看重现问题所需要的全部内容。
  • @string.username 什么是输入,它的值是如何定义的?

标签: java string loops netbeans append


【解决方案1】:

如果没有运行示例,我相信您的问题就在这里......

while((line = bufferedReader.readLine()) != null) {
    String[] parts = line.split(" - ");
    String subject = parts[0];
    String question = parts[1];
    String answer = parts[2];
    //if(input.equals(question) && !subject.equals(currentSubject)){ currentSubject = subject; }
    // if(input.equals(question) && subject.equals(currentSubject)){ Output.append(answer); }
    if(input.contains("what is your name")) { 
        Output.append("my name is"+ newline);
    }
}   

基本上,在循环的每次运行中,如果 JTextField input 包含文本 what is your name,它会将 String "my name is"+ newline 附加到文本字段。如果文件中有 4 个问题,则追加 4 次,如果有 100 个问题,则追加 100 次。

【讨论】:

  • 是的,这是有道理的,但是我相信另一个问题是 .contains,如果我将其更改为 .equals 它可以正常工作,但我之前没有使用过 .contains 并且不确定退出它是如何工作的但它似乎比equals更有用。
  • contains 允许您进行一种通配符选择(通配符元素是自动的)。如果String 的任何部分与输入匹配,则它将返回true,否则返回false。 equals 要求整个 String 匹配输入
【解决方案2】:

玩了几个小时后,我在 MadProgrammer 的帮助下设法修复了它。 固定代码:

我无法让块引用起作用,所以这是一张图片:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多