Java 多次使用Scanner.nextLine()时出现问题;

Java 多次使用Scanner.nextLine()时出现问题;,java,eclipse,java.util.scanner,Java,Eclipse,Java.util.scanner,因此,我有一些代码,简化后是: import java.util.scanner private Scanner input; int enterInteger() { System.out.println("Enter the quantity"); return input.nextInt(); } String enterString() { return input.nextLine(); } void main() { System.out.p

因此,我有一些代码,简化后是:

import java.util.scanner

private Scanner input; 

int enterInteger()
{
    System.out.println("Enter the quantity");
    return input.nextInt();
}
String enterString()
{
    return input.nextLine();
}


void main()
{
    System.out.println("Enter option: 1) Add Quantity\n2)Edit Item");
    String input = enterString();
    switch (input)
    {
        case "1":
            enterInteger();
            break;
        case "2":
            //Do whatever
            break;
        default:
            System.out.println("Invalid!");
            main();
            break;
    }
}
因此,每当用户将选项输入为1时,它都会加载询问用户的enterInteger(),并返回一个整数

但是,当这种情况发生时,用户输入整数并按enter键,然后代码开始执行
默认值:
大小写。当我添加一个断点时,选项的值是“”,这就是为什么会执行
默认值:
,但我看不出如何防止它


我知道这有点愚蠢,所以谢谢你。

我还不知道原因,但在过去,我只需要使用nextLine()并在必要时使用Integer.parseInt()进行解析

顺便说一下,您还没有初始化扫描仪

Scanner input = new Scanner(System.in);

对不起,是的,扫描仪是用实际代码初始化的。我可以解析,但是有些菜单选项也是按字母顺序排列的,所以字符串是必需的。出于一些奇怪的原因,答案是:int enterInteger(){System.out.println(“输入数量”);return Integer.parseInt(input.nextLine());}我复制并粘贴了您的代码,添加了我认为缺少的部分,但在我输入数量后,它只在案例1中执行
break
语句并退出。你能发布一些我们可以执行的代码吗?嘿,迈克尔,谢谢你的测试。结果这一个奇怪的工作,但实际的代码没有。原因是,如果您直接调用nextInt(),然后再调用nextLine()(例如,键入1),它会得到“\r\n”作为输入,因为该数字被nextInt()使用(我自己的白痴:)