[英]Why does random.nextInt() create “IllegalArgumentException: n <= 0: -1”?
[英]Why Does nextInt() Ignore /n?
我遇到了我的代码问题,幸好我能够在这里解决另一个类似的问题,但是我很好奇为什么会这样。
这是我程序的简化版本:
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
while(!input.equals("x")){
if(input.equals("m")){
String temp = scan.nextLine();
String entry = scan.nextLine();
}
else if(input.equals("f")){
String color = scan.nextLine();
int nothing = scan.nextInt();
}
System.out.println("Enter 'm' for mascara, 'f' for foundation, 'x' to exit");
System.out.println("Entry? :");
input = scan.nextLine();
}
}
使用此代码,输入“ m”不会给我任何问题,但是输入“ f”会使我两次打印两次。 为什么恰好发生在nextInt()而不是nextLine()呢?
'm'
Enter 'm' for mascara, 'f' for foundation, 'x' to exit
Entry? :
'f'
Enter 'm' for mascara, 'f' for foundation, 'x' to exit
Entry? :
Enter 'm' for mascara, 'f' for foundation, 'x' to exit
Entry? :
为什么
nextInt()
忽略\\ n?
它不会忽略它。 它只是不读1 。
实际上, nextLine
方法在这里是异常的。 大多数next
方法的工作方式是获取下一个令牌,然后尝试解析令牌。 获取下一个令牌意味着:
nextLine()
方法是不同的。 它仅读取直到下一个行尾序列的所有字符。
1-...除非在调用nextInt()
它是领先的定界符之一!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.