如果语句正在跳过第一个用户输入扫描程序对象

时间:2014-05-10 23:01:34

标签: if-statement java.util.scanner

程序段工作正常,但正在跳过if语句中的第一个任务。

如果用户选择了" Y"

,则输出如下
  

您是否希望添加另一个主题代码 - Y或N?
  ÿ

     

输入主题名称:
  输入主题代码:

     

ABC123

它不会让用户有机会输入主题名称。它在创建if语句之前有效,所以我假设它与之有关。我一直在绞尽脑汁,但无济于事。

 System.out.println("Do you wish to add another subject code  - Y or N?  ");
    String response = input.next();

    if (response.equalsIgnoreCase("Y")) {

    /**User input*/

    System.out.println("\nEnter the subject name: ");
    String subjectName = input.nextLine();
    System.out.println("\nEnter subject code: ");
    String subjectCode = input.next();
    Subject mySubject = new Subject(subjectCode, subjectName);

    /**Write to the file*/
    output.println(mySubject.getSubjectCode() + " " + mySubject.getSubjectName());
    output.close();
    }
    else  
      output.close();

    System.out.println("\nProgram terminated\n");

干杯, 苏珊

1 个答案:

答案 0 :(得分:0)

String response = input.next();     // Wrong
String response = input.nextLine(); // Right

执行input.next()时,您只需阅读该行的第一个单词。

如果您之后执行input.nextLine(),则会读到下一个换行符。

这意味着如果您键入y<enter>,第一个语句将读取y,第二个语句将读取,直到<enter>只是空字符串。