Java 可能的类错误?

Java 可能的类错误?,java,Java,起重臂等级: class Randomagain { public static void main(String args[]){ Scanner tuna = new Scanner(System.in); boom boomObj = new boom(); System.out.println("~~Calculator~~"); System.out.print("Enter your 1st number: "

起重臂等级:

class Randomagain {
    public static void main(String args[]){
        Scanner tuna = new Scanner(System.in); 
        boom boomObj = new boom();
        System.out.println("~~Calculator~~");
        System.out.print("Enter your 1st number: "); int first_num = tuna.nextInt();
        System.out.print("Enter your 2nd number: "); int second_num = tuna.nextInt();

        System.out.print("What do you want to do? [plus,sub,mult,div]:  "); 
        String choice = tuna.nextLine();
        if (choice == "plus") boomObj.addition(first_num, second_num);
        if (choice == "sub") boomObj.subtraction(first_num, second_num);
        if (choice == "mult") boomObj.multiply(first_num, second_num);
        if (choice == "div") boomObj.division(first_num, second_num); 
        else {System.out.println("Please check the fields again!! ");}
    }
}
当我运行它时,在第三个命令中,它就像:

public class boom {
    private int sub_final, add_final, multi_final, div_final;
    public void addition(int a, int b){
        add_final = a + b; System.out.println(a+ " + " +b+ " = " +add_final);
    }

    public void subtraction(int a, int b){
        sub_final = a - b; System.out.println(a+ " - " +b+ " = " +sub_final);
    }

    public void multiply(int a, int b){
        multi_final = a * b; System.out.println(a+ " * " +b+ " = " +multi_final);
    }

    public void division(int a, int b){
        div_final = a + b; System.out.println(a+ " / " +b+ " = " +add_final);
    }
}

而且我无法键入任何内容作为其答复。

您需要使用
equals
方法将
选项
与文本字符串进行比较,而不是使用
=
。原因是
==
检查比较的变量是否引用同一个字符串对象,在您的例子中不是

因此,替换:

What do you want to do? [plus,sub,mult,div]:  Please check the fields again!! 

tuna.nextLine()
将读取
InputStream
中的所有内容,直到找到一个换行符(换行符),它是您输入的第二个数字和Enter键之间的空文本

将其更改为
tuna.next()
,以使其正常工作

除此之外,您应该使用
equals
方法比较
String
s,而不是使用
=

                 if (choice.equals("plus")) boomObj.addition(first_num, second_num);
                  if (choice.equals("sub")) boomObj.subtraction(first_num, second_num);
                  if (choice.equals("mult")) boomObj.multiply(first_num, second_num);
                  if (choice.equals("div")) boomObj.division(first_num, second_num); 
                 else {System.out.println("Please check the fields again!! ");
代码中的另一个问题是,最后一个
else
语句只影响最接近的
if
语句。您的代码当前为:

//if (choice == "plus")
if (choice.equals("plus")) {
    //...
}
这意味着,如果您输入的文本与
“div”
不同,程序将始终执行
else
语句中的代码。您的代码应更改为:

if (choice.equals("plus") { }
if (choice.equals("sub") { }
if (choice.equals("mul") { }
if (choice.equals("div") { } else { } //only affects here

这是因为在它打印出错误消息之后,程序就结束了。另外,您不能检查
String
=
的等价性,您必须使用
equals()
。为什么程序不等待用户回答“您想做什么?”?非常感谢!!我是Java新手,所以我不确定字符串函数的正确语法:)
if (choice.equals("plus") { }
if (choice.equals("sub") { }
if (choice.equals("mul") { }
if (choice.equals("div") { } else { } //only affects here
if (choice.equals("plus") { }
else if (choice.equals("sub") { }
else if (choice.equals("mul") { }
else if (choice.equals("div") { } else { }