Java 为什么nextInt()忽略/n?
我的代码遇到了一个问题,谢天谢地,我在这里用另一个类似的问题解决了这个问题,但我很好奇为什么会发生这种情况 以下是我的程序的简化版本:Java 为什么nextInt()忽略/n?,java,java.util.scanner,user-input,Java,Java.util.scanner,User Input,我的代码遇到了一个问题,谢天谢地,我在这里用另一个类似的问题解决了这个问题,但我很好奇为什么会发生这种情况 以下是我的程序的简化版本: public static void main(String[] args){ Scanner scan = new Scanner(System.in); String input = scan.nextLine(); while(!input.equals("x")){ if(input.equals("m")){
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'会让我在这两行中打印我们的代码两次。为什么NextLink()会发生这种情况,而nextLine()不会
为什么nextInt()
忽略\n
它不会忽视它。只是看不懂而已
实际上,这里的反常方法是nextLine
方法。大多数next
方法的工作原理是获取下一个令牌,然后尝试解析令牌。获取下一个令牌意味着:
nextLine()
方法不同。它只读取所有字符,包括下一个行尾序列
1-。。。除非它是调用
nextInt()
时的前导分隔符之一 你能详细说明一下,如果它是一个前导的分隔符,你的意思是什么吗?分隔符是一个用来分隔标记的字符;i、 e.你想忽略的代币之间的东西。前导分隔符是位于要读取的标记前面的分隔符;i、 它“引领”了它。(后面的分隔符是标记后面的分隔符。)啊,我现在明白了。谢谢你简洁明了的回答。
'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? :