我的程序无效。你觉得怎么回事?
Scanner in = new Scanner(System.in);
System.out.print("Enter first number: ");
double num1 = in.nextDouble();
System.out.print("Enter second number: ");
double num2 = in.nextDouble();
System.out.println("Enter operation to perform: ");
String oper = in.next();
if(oper == "add" || oper == "addition" || oper == "+") {
double sum = num1 + num2;
System.out.printf("The sum of the two numbers is %d", sum);
}
当我键入操作(String)时,程序终止。输出:
Enter first number: 12
Enter second number: 8
Enter operation to perform:
"add"
Process completed.
我似乎无法找到错误,请帮忙?
答案 0 :(得分:4)
永远不要将字符串与运算符==
进行比较 - 这是错误的。请改用equals
:
if(oper.equals("add") || oper.equals("addition") || oper.equals("+")) {
答案 1 :(得分:2)
不要使用==
使用equals方法:
if(oper.equals("add") || oper.equals("addition") || oper.equals("+"))
==
运算符用于比较内存空间中的地址而不是比较字符串的内容
答案 2 :(得分:2)
不要使用==
比较字符串。始终使用equals()
:
if("add".equals( oper ) || "addition".equals( oper ) || "+".equals( oper ) ) {
// ...
}
使用==
比较对象引用(或基本类型)。字符串是Java中的对象,因此当您比较oper
和add
时,两者都指向不同的对象。因此,即使它们包含相同的值,与==
的比较也会失败,因为它们仍然是不同的对象。
答案 3 :(得分:1)
if(oper == "add" || oper == "addition" || oper == "+") {
应该是
if(oper.equals("add") || oper .equals("addition") || oper.equals("+")) {
使用.equals
方法检查两个字符串是否有意义相等,==
运算符只检查两个引用变量是否引用同一个实例。
答案 4 :(得分:1)
请勿使用String
对==
进行比较。请改用equals
。
答案 5 :(得分:1)
使用equals(..)
而不是==
替换
if(oper == "add" || oper == "addition" || oper == "+") {
通过
if(oper.equals("add") || oper.equals("addition") || oper.equals("+")) {
==
对同一参考进行比较,而不是相同内容。
答案 6 :(得分:1)
执行所有其他人的说法:使用equals
甚至equalsIgnoreCase
。 (在其他答案中对此有很好的解释。在这里重复它会很愚蠢。)
在没有“在控制台中”的情况下输入“添加”。
只做这两件事都可以。
答案 7 :(得分:0)
使用此
if("add".equals(oper) || "addition".equals(oper) || "+".equals(oper)) {
double sum = num1 + num2;
System.out.printf("The sum of the two numbers is %d", sum);
}
答案 8 :(得分:0)
除了使用equals()
或更好equalsIgnore()
代替==
字符串外,您还需要在add
而不是command-line
中输入"add"
{1}}。
否则,您必须将其比较为:
oper.equals("\"add\"")
此外,您似乎来自C
背景。通常在Java中,可以使用:
System.out.println("The sum of the two numbers is " + sum);
而不是
System.out.printf("The sum of the two numbers is %d", sum);
因为%d
打印integer
值和not double
值。