Java 将p键入双精度时出错?
当扫描仪提示输入操作员(例如1、2、3或4)时,在扫描仪中键入p时,我收到一条错误消息。代码的其余部分都会通过,但我想知道如何才能到达您可以输入的位置,例如,一个p,并循环返回到它,提示您输入正确的运算符Java 将p键入双精度时出错?,java,Java,当扫描仪提示输入操作员(例如1、2、3或4)时,在扫描仪中键入p时,我收到一条错误消息。代码的其余部分都会通过,但我想知道如何才能到达您可以输入的位置,例如,一个p,并循环返回到它,提示您输入正确的运算符 import java.util.Scanner; public class charlespeppersprog5 { public static void main(String[] args) { Scanner operand = new Scanne
import java.util.Scanner;
public class charlespeppersprog5 {
public static void main(String[] args)
{
Scanner operand = new Scanner (System.in);
double leftOperand = 0;
double rightOperand = 0;
double operator = 0;
double finalAnswer = 0;
System.out.println("-----------------------------------------");
System.out.println("");
System.out.print("Enter the left operand : ");
leftOperand = operand.nextDouble();
System.out.print("Enter the right operand : ");
rightOperand = operand.nextDouble();
System.out.println("");
System.out.println("-----------------------------------------");
System.out.println("");
System.out.println("\t 1 -> Multiplication");
System.out.println("\t 2 -> Division");
System.out.println("\t 3 -> Addition");
System.out.println("\t 4 -> Subtraction");
System.out.println("");
System.out.println("-----------------------------------------");
System.out.println("");
System.out.print("Choose an operator from the above menu : ");
operator = operand.nextDouble();
while (operator!=1 && operator!=2 && operator!=3 && operator!=4)
{
System.out.print("Choose an operator from the above menu : ");
operator = operand.nextDouble();
}
在此处输入代码
//就在这里,如果除了在此处输入代码
1,2,3,4之外,还输入了任何代码,则示例要求再次循环。所以输入p,你就会得到这个消息
在此处输入代码
//线程“main”java.util.InputMismatchException中的异常
位于java.util.Scanner.throwFor(未知源)
位于java.util.Scanner.next(未知源)
位于java.util.Scanner.nextDouble(未知源)
位于charlespeppersprog5.main(charlespeppersprog5.java:35)
这是因为它期望一个双精度,并得到其他东西。先检查一下双人间
while (!operand.hasNextDouble()) {
System.out.println("Please enter 1 - 4");
operand.next(); // accept anything but exit while loop when conditions are met
}
operator = operand.nextDouble() ;
您将收到一个错误,因为编译器正在检测一个双精度值,但正在接收一个无效参数,并且可能会抛出某种异常。您可以在try/catch块中包含要检查输入类型的代码,如下所示:
try {
operator = operand.nextDouble();
} catch (InputMismatchException e) { // Note you are only catching invalid input. Other double values will still be accepted
flag = false;
}
if (flag) {
// do logic
} else {
// go back
}
我希望你能大致了解如何解决这个问题。我刚刚向您展示了一个非常简单的逻辑-您可以根据需要实现它 您遇到了什么错误?请发布错误!-------------------------------------输入左操作数:1.2输入右操作数:3.4------------------------------------------1->乘法2->除法3->加法4->减法------------------------------------------从上面的菜单中选择一个运算符:线程“main”中的p异常java.util.Scanner.throwFor(未知源代码)java.util.Scanner.next(未知源代码)java.util.Scanner.nextDouble(未知源代码)charlespeppersprog5.main(charlespeppersprog5.java:35)@user3316886:请将其添加到您的问题中,而不是作为注释!你可以看到我在哪里输入了p,它给了我一个错误immediately@user3316886此代码将起作用。如果这个答案有助于你解决问题,请记得投票并将其标记为正确答案
try {
operator = operand.nextDouble();
} catch (InputMismatchException e) { // Note you are only catching invalid input. Other double values will still be accepted
flag = false;
}
if (flag) {
// do logic
} else {
// go back
}