Java 输入数字时从扫描仪获取字符串

Java 输入数字时从扫描仪获取字符串,java,Java,我试图编写一个程序,要求用户输入2个数字,然后要求用户通过输入命令对应的数字从菜单中选择一个命令。 我可以写程序,如果我把输入作为一个Int,但不能计算出它是一个字符串,它也必须是一个字符串。 当它进入while循环以验证用户输入时,我遇到了问题。当语句为false时,它不会停止。它将留在循环中。我无法找出我做错了什么。 这是我的密码 import java.util.Scanner; 公共ab类{ 公共静态void main(字符串[]args){ System.out.println(“-

我试图编写一个程序,要求用户输入2个数字,然后要求用户通过输入命令对应的数字从菜单中选择一个命令。 我可以写程序,如果我把输入作为一个Int,但不能计算出它是一个字符串,它也必须是一个字符串。 当它进入while循环以验证用户输入时,我遇到了问题。当语句为false时,它不会停止。它将留在循环中。我无法找出我做错了什么。 这是我的密码

import java.util.Scanner;
公共ab类{
公共静态void main(字符串[]args){
System.out.println(“-----------------------------------------”;
扫描仪标准输入=新扫描仪(System.in);
双L;
System.out.print(“输入左操作数:”);
L=stdIn.nextDouble();
双R;
System.out.print(“输入正确的操作数:”);
R=stdIn.nextDouble();
System.out.println(“-----------------------------------------”;
System.out.println(“1->乘法”);
System.out.println(“2->Division”);
System.out.println(“3->Addition”);
System.out.println(“4->subtraction”);
System.out.println(“-----------------------------------------”;
字符串输入;
System.out.print(“通过输入相应的数字选择以下命令之一:”);
输入=stdIn.next();
System.out.println();
而(!input.equals(1)和&!input.equals(2)和&!input.equals(3)和&!input.equals(4)){
系统输出打印(“无效输入,请键入有效数字(1、2、3或4):”;
输入=stdIn.next();
System.out.println();
如果(输入等于(1)){
系统输出打印(L+“*”+R+“=”+(L*R));
}else if(输入等于(2)){
系统输出打印(L+“/”+R+“=”+(L/R));
}else if(输入等于(3)){
系统输出打印(L+“+”+R+“=”+(L+R));
}否则{
系统输出打印(L+“-”+R+“=”+(L-R));
}
}
stdIn.close();
}

}
input=stdIn.next()将输入作为
字符串
而您的比较是针对整数的。所以一个
String
永远不等于
Int

您可以尝试将while循环条件更改为:

while (!input.equals("1") && !input.equals("2") && !input.equals("3") && !input.equals("4"))

注意数字周围的双引号已被回答,但请检查此项

import java.util.Scanner;

public class ab {

public static void main(String[] args) {
    System.out.println("-------------------------------------");
    Scanner stdIn = new Scanner(System.in);
    double L;
    System.out.print("Enter the left operand: ");
    L = stdIn.nextDouble();
    double R;
    System.out.print("Enter the right operand: ");
    R = stdIn.nextDouble();
    System.out.println("-------------------------------------");
    System.out.println("1 -> Multiplication");
    System.out.println("2 -> Division");
    System.out.println("3 -> Addition");
    System.out.println("4 -> Subraction");
    System.out.println("-------------------------------------");
    String input;
    System.out.print("Choose one of the following commands by enterning the corresponding number: ");

    input = stdIn.next();

    while (true) {

        if (!input.equals("1") && !input.equals("2") && !input.equals("3") && !input.equals("4")) {
            System.out.print("Invalid entry, please type a valid number (1, 2, 3 or 4): ");
            input = stdIn.next();
        } else {
            if (input.equals("1")) {
                System.out.print(L + " * " + R + " = " + (L * R));
                break;
            } else if (input.equals("2")) {
                System.out.print(L + " / " + R + " = " + (L / R));
                break;
            } else if (input.equals("3")) {
                System.out.print(L + " + " + R + " = " + (L + R));
                break;
            } else {
                System.out.print(L + " - " + R + " = " + (L - R));
                break;
            }
        }

    }


    stdIn.close();
}
}