【问题标题】:Issues with nextLine(); [duplicate]nextLine() 的问题; [复制]
【发布时间】:2013-01-22 06:13:35
【问题描述】:

可能重复:
Scanner issue when using nextLine after nextInt

我正在尝试创建一个程序,它允许用户使用扫描仪将值输入到数组中。

但是,当程序询问学生的近亲时,它不允许用户输入任何内容并立即结束程序。

下面是我做的代码:

if(index!=-1)
    {
        Function.print("Enter full name: ");
        stdName = input.nextLine();

        Function.print("Enter student no.: ");
        stdNo = input.nextLine();

        Function.print("Enter age: ");
        stdAge = input.nextInt();

        Function.print("Enter next of kin: ");
        stdKin = input.nextLine();

        Student newStd = new Student(stdName, stdNo, stdAge, stdKin);
        stdDetails[index] = newStd;
    }

我尝试过使用 next();但它只会占用用户输入的第一个单词,这不是我想要的。有没有办法解决这个问题?

【问题讨论】:

  • stdName = JOptionPane.showInputDialog("Enter full name: ");

标签: java java.util.scanner


【解决方案1】:

当您按回车键时会出现问题,这是一个换行符\n 字符。 nextInt() 仅使用整数,但它会跳过换行符 \n。为了解决这个问题,您可能需要在阅读int 后添加一个额外的input.nextLine(),它可以消耗\n

Function.print("Enter age: ");
stdAge = input.nextInt();
input.nextLine();.

// rest of the code

【讨论】:

    【解决方案2】:

    问题在于 input.nextInt() 这个函数只读取 int 值。因此,当您继续使用input.nextLine() 阅读时,您会收到 "\n" Enter 键。所以要跳过这个,你必须添加input.nextLine()

    Function.print("Enter age: ");
    stdAge = input.nextInt();
    input.nextLine();
    Function.print("Enter next of kin: ");
    stdKin = input.nextLine();
    

    为什么next() 不起作用..?
    next() 返回下一个 token , nextLine() 返回 NextLine。如果我们知道差异就好了。标记是由空格包围的非空白字符的字符串。

    来自Doc

    从这个扫描器中查找并返回下一个完整的令牌。一个完整的标记前后是匹配分隔符模式的输入。此方法在等待输入扫描时可能会阻塞,即使之前调用 hasNext() 返回 true。

    【讨论】:

      【解决方案3】:

      input.nextInt(); 之后调用input.nextLine(); 直到行尾。

      例子:

      Function.print("Enter age: ");
      stdAge = input.nextInt();
      input.nextLine();  //Call nextLine
      
      Function.print("Enter next of kin: ");
      stdKin = input.nextLine();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 2020-01-01
        • 2016-06-20
        • 2022-01-25
        • 2018-05-22
        相关资源
        最近更新 更多