【问题标题】:Why does a Java while loop that asks for user input using scanner skip the first input为什么使用扫描仪要求用户输入的Java while循环会跳过第一个输入
【发布时间】:2017-12-01 14:47:17
【问题描述】:

我正在尝试获取用户输入,直到输入空白字段并按下回车按钮。我的 while 循环跳过了第一个输入,我试过环顾四周,但我不明白如何修复它或使用更好的方法。

public static void main(String[] args){

      Container x = new Container();
      Scanner scanner = new Scanner(System.in);
      String input = scanner.nextLine();

      while (!input.equals("")) {   
            input = scanner.nextLine();            
            x.addWord(input);         
            } 
      x.display();

    }

【问题讨论】:

  • 显然是因为您在对input 进行任何操作之前调用了两次input = scanner.nextLine();
  • 每个人都这么说,但我不明白如何解决它
  • 我不明白如何解决它 - 不要调用两次?
  • 在循环中将x.addWord(input); 移动到input = scanner.nextLine(); 之前怎么样?

标签: java while-loop java.util.scanner


【解决方案1】:

您在进入循环之前读取了一行,然后立即在循环主体的第一行读取另一行。您应该将读取移动到循环主体的末尾:

String input = scanner.nextLine();
while (!input.equals("")) {   
    x.addWord(input);
    input = scanner.nextLine();            
} 

【讨论】:

  • 感谢您花时间解释这一点。 addWord() 在读取用户输入的扫描仪之前被调用时如何添加输入的输入。
  • @DanA 如果您阅读完整代码,scanner.nextLine 在循环之前被调用一次...
  • 谢谢大家。我认为第一行只是用于初始化,输入只会在 while 循环内开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 2013-03-09
  • 2013-11-25
  • 2015-12-13
  • 1970-01-01
相关资源
最近更新 更多