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 { }