繁体   English   中英

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

[英]how to scan for certain character with scanner(system.in)

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

}
}

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

str == "+"

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

str.equals("+")

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

您的代码很好,问题是当您将ch与字符串“ +”,“-”等进行比较时...
在Java中,字符串是对象。 如果对象引用相同的对象,则使用==运算符比较对象只会返回true。 为了实际比较这两个对象,您需要使用equals()方法。
综上所述,正确的条件应该是:
if(ch.equals("+")){ }用于每个比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM