如何使用扫描仪扫描某些字符(system.in)

时间:2015-10-24 21:00:07

标签: java if-statement java.util.scanner

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

}
}

3 个答案:

答案 0 :(得分:3)

字符串对象是引用对象,这意味着当您输入类似

的代码时
str == "+"

你要检查str所在的内存点是否等于+。要验证两个字符串是否相互等同,您需要使用方法.equals,如此

str.equals("+")

答案 1 :(得分:1)

而不是==您应该使用equals方法

答案 2 :(得分:1)

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