2015-10-24 84 views
2

我是新来的java编程。我试图让计算器可以使用if语句来执行4个基本的数学运算。但是,我没有按预期工作。当试图解析运算符时,它只是以else语句结束。如何用扫描仪扫描某个字符(system.in)

我想我没有正确格式化,如果陈述?

任何帮助,非常感谢。

谢谢。

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(); 

} 
} 
+1

可能的重复[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

+0

你没有比较你的字符串正确。由于您将运算符存储在字符串中,因此您需要使用'.equals()'而不是'=='。例如:'if(ch.equals(“+”))'而不是'if(ch ==“+”)' –

回答

1

,而不是==你应该使用equals方法

3

String对象是参考对象,这意味着当你喜欢

str == "+" 

你检查,看看输入了代码,如果在内存中的点str所在的位置等于+。要验证是否两个字符串等同于对方,你需要使用方法.equals像这样

str.equals("+") 
+0

谢谢,它现在正在工作。但是,我可以使用字符而不是字符串,并在if语句内比较char? – Perp

+0

如果您将字符串与另一个字符串进行比较,则需要使用.equals方法。如果你比较两个字符,你可以使用==比较器。 从这个角度来看,我觉得声明你可以总是检查两个变量是否具有相同的值,如果它们是原始数据类型,这很重要。其他任何事情都需要通过更复杂的方法进行比较。 –

1

你的代码是正确的,问题是当你比较ch与字符串“+”,“ - ”,和等等...
在java字符串中是对象。将对象与==运算符进行比较只会在对象引用同一对象时返回true。为了实际比较两个对象,您需要使用equals()方法。
所以总结一下,正确的条件应该是:
if(ch.equals("+")){ } 每次比较。