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);
}
}
当我运行它时,在第3个命令中,它就像:
What do you want to do? [plus,sub,mult,div]: Please check the fields again!!
我无法输入任何内容作为回复。
答案 0 :(得分:1)
您需要使用choice
方法将equals
与文字字符串进行比较,而不是使用==
。原因是==
检查比较变量是否引用相同的字符串对象,在您的情况下不是。
所以,替换:
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!! ");
带
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!! ");
答案 1 :(得分:1)
tuna.nextLine()
会读取InputStream
中的所有内容,直到找到换行符(换行符),这是您输入的第二个数字与 Enter 之间的空文本kbd> key。
将其更改为tuna.next()
以使其正常工作。
除此之外,您应该使用String
方法比较equals
,而不是使用==
:
//if (choice == "plus")
if (choice.equals("plus")) {
//...
}
您的代码中的另一个问题是,最后一个else
句子仅影响最接近的if
语句。您的代码目前是:
if (choice.equals("plus") { }
if (choice.equals("sub") { }
if (choice.equals("mul") { }
if (choice.equals("div") { } else { } //only affects here
这意味着如果您输入的某些文本与"div"
不同,则程序将始终执行else
语句中的代码。您的代码应更改为:
if (choice.equals("plus") { }
else if (choice.equals("sub") { }
else if (choice.equals("mul") { }
else if (choice.equals("div") { } else { }