Java 使用do和开关提示输入

Java 使用do和开关提示输入,java,Java,我的代码有什么问题?它输出第一个语句(?)很好,我可以在那里输入我想要的字符,但是当它转到第二个语句(?)时(“输入第一个操作数”),我得到一个错误,它说“ 在线程“main”java.util.NoSuchElementException中输入第一个操作数:Exception 有人能指出我的错误吗?这可能是保留“\n”的问题。也许这个问题可以帮助您:我建议您使用string.nextLine();而不是.nextLine();方法,因为它在nextLine解析EOL时不处理EOL 为什么要在这

我的代码有什么问题?它输出第一个语句(?)很好,我可以在那里输入我想要的字符,但是当它转到第二个语句(?)时(“输入第一个操作数”),我得到一个错误,它说“

在线程“main”java.util.NoSuchElementException中输入第一个操作数:Exception


有人能指出我的错误吗?

这可能是保留“\n”的问题。也许这个问题可以帮助您:

我建议您使用
string.nextLine();
而不是
.nextLine();
方法,因为它在nextLine解析EOL时不处理EOL

为什么要在这里将
字符串作为参数传递给scanner类

public static void main(String[] args){
    char OperatorCode;
    int answer;
    int firstOperand;
    int secondOperand;
    String inputString;
    boolean quit = false;
    Scanner inLine = new Scanner(System.in);
    do{
        System.out.print("Enter the Operator Code (A,S,M or D): ");
        inputString = inLine.nextLine();
        OperatorCode = inputString.charAt(0);
        if (OperatorCode != 'Q'){
            inputString = inputString.substring(1, inputString.length());
            Scanner string = new Scanner(inputString);
            System.out.print("Enter the First Operand: ");
            firstOperand = string.nextInt();
            System.out.print("Enter the Second Operand: ");
            secondOperand = string.nextInt();
            switch (OperatorCode){
                case 'A' : answer = (firstOperand + secondOperand);
                           System.out.println(firstOperand + " + " + secondOperand + " is " + answer);
                case 'S' : answer = (firstOperand - secondOperand);
                           System.out.println(firstOperand + " - " + secondOperand + " is " + answer);
                case 'M' : answer = (firstOperand * secondOperand);
                           System.out.println(firstOperand + " * " + secondOperand + " is " + answer);
                case 'D' : answer = (firstOperand / secondOperand);
                           System.out.println(firstOperand + " / " + secondOperand + " is " + answer);
                           break;
            }               
        } else 
              quit = true;
    }while (!quit);
} 
}
我猜可能是,
(System.in)


还可以按照John的建议将
break;
添加到案例A、S和M中

System.out.print之后添加
string.nextLine();
(“输入第二个操作数:”)
。在每个
案例的结尾缺少
break
语句至少是一个问题……谢谢Jon和hagubear:)我没有看到这些。我恐怕这不是问题:/我仍然得到了错误。谢谢你,但我仍然得到了相同的错误,现在它添加了字符串无法转换为int。噢,哇,我怎么能呢我忽略了这一点。非常感谢!:Dbreak;和System.in.Tho它不需要是string.nextLine();
Scanner string = new Scanner(inputString);