Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么nextInt()忽略/n?_Java_Java.util.scanner_User Input - Fatal编程技术网

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? :