可能重复:
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;
}
我一直在使用明年受审(); 但它只会只是把用户输入这不是我想要的第一个字。 反正是有解决这个问题?
当你按下回车键,这是一个新行出现问题\n
字符。 nextInt()
的功耗仅为整数,但它跳过换行符\n
。 为了解决这个问题,你可能需要添加额外的input.nextLine()
你读了之后int
,它可以消耗\n
。
Function.print("Enter age: ");
stdAge = input.nextInt();
input.nextLine();.
// rest of the code
问题是与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的先前调用()返回真,这方法也可能阻塞。
让input.nextLine();
后调用input.nextInt();
其读取直到行末。
例:
Function.print("Enter age: ");
stdAge = input.nextInt();
input.nextLine(); //Call nextLine
Function.print("Enter next of kin: ");
stdKin = input.nextLine();