与nextLine()的问题; [重复](Issues with nextLine(); [du

2019-07-18 12:43发布

可能重复:
nextInt后使用nextLine当扫描仪问题

我试图创建一个程序,它可以让用户输入值到使用扫描仪的阵列。

然而,当程序要求亲属的学生的未来,它不会让用户输入任何东西,马上结束程序。

下面是我做的代码:

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;
    }

我一直在使用明年受审(); 但它只会只是把用户输入这不是我想要的第一个字。 反正是有解决这个问题?

Answer 1:

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

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

    // rest of the code


Answer 2:

问题是与input.nextInt()这个函数只读取的int值。 所以,当你继续阅读input.nextLine()收到“\ n” 回车键。 所以跳过这一点,你必须添加input.nextLine()

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

为什么next()不工作..?
下一个()返回一个令牌,和nextLine()返回NextLine。 它很好的,如果我们知道的差异。 标记是用空格包围非空白字符的字符串。

从文件

查找并返回来自此扫描器的下一个完整标记。 一个完整的令牌之前和之后输入的是,分隔符模式匹配。 在等待输入进行扫描,即使hasNext的先前调用()返回真,这方法也可能阻塞。



Answer 3:

input.nextLine(); 后调用input.nextInt(); 其读取直到行末。

例:

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

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


文章来源: Issues with nextLine(); [duplicate]