我是java编程的新手。我尝试使用if语句制作可以进行4种基本数学运算的计算器。但是我没有按预期工作。在尝试解析运算符时,它只是用else语句完成。
我想我没有正确格式化if语句?
非常感谢任何帮助。
感谢。
import java.util.Scanner;
import java.lang.Object;
public class calc {
public static void main(String args[]) {
System.out.println("Test kalkulator za sabiranje");
Scanner keyboard = new Scanner(System.in);
double fnum, snum, res;
String ch = "";
System.out.println("Enter first number: ");
fnum = keyboard.nextDouble();
System.out.println("Enter operation: ");
ch = keyboard.next();
if( ch == "+") {
System.out.println("Enter second number: ");
snum = keyboard.nextDouble();
res = fnum + snum;
System.out.println("Result is: "+ res);
}
else if ( ch == "-") {
System.out.println("Enter second number: ");
snum = keyboard.nextDouble();
res = fnum - snum;
System.out.println("Result is: "+ res);
}
else if ( ch == "/") {
System.out.println("Enter second number: ");
snum = keyboard.nextDouble();
res = fnum / snum;
System.out.println("Result is: "+ res);
}
else if( ch == "*") {
System.out.println("Enter second number: ");
snum = keyboard.nextDouble();
res = fnum * snum;
System.out.println("Result is: "+ res);
}
else {
System.out.println("You entered wrong operator, please try again");
}
keyboard.close();
}
}
答案 0 :(得分:3)
字符串对象是引用对象,这意味着当您输入类似
的代码时str == "+"
你要检查str所在的内存点是否等于+。要验证两个字符串是否相互等同,您需要使用方法.equals,如此
str.equals("+")
答案 1 :(得分:1)
而不是==
您应该使用equals
方法
答案 2 :(得分:1)
你的代码很好,问题是你将ch
与字符串" +"," - "等进行比较...等等/>
在java中,字符串是Objects。将对象与==
运算符进行比较只会在对象引用同一对象时返回true。为了实际比较两个对象,您需要使用equals()
方法
总而言之,正确的条件应该是:
if(ch.equals("+")){ }
每次比较。