简单的数学Java程序,如果语句不起作用

时间:2012-09-15 15:58:53

标签: java math if-statement

我无法让这个程序正常工作,它需要2个数字,然后是你告诉它要做的数学类型。我写这篇文章只是为了刷新我几年没用java的记忆。这是代码:

import java.util.Scanner;
public class math {
    public static void main(String[] args){
        Scanner one = new Scanner(System.in);
        Scanner two = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int n1 = one.nextInt();
        System.out.print("Enter a second number: ");
        int n2 = one.nextInt();
        System.out.print("Add, subtract, multiply, or divide? ");
        String f = two.nextLine();
        System.out.println(f);
        if (f=="add"){
            System.out.println(n1 + n2);
        }else if (f=="subtract") {
            if (n1>n2){
                System.out.println(n1 - n2);
            }else{
                System.out.println(n2 - n1);
            }
        }else if (f=="multiply"){
            System.out.println(n1 * n2);
        }else if (f=="divide"){
            if (n1>n2){
                System.out.println(n1 / n2);
            }else{
                System.out.println(n2 / n1);
            }
        }
    }
}

编辑:谢谢大家,它适用于f.equals()

4 个答案:

答案 0 :(得分:3)

if (f=="add")

比较参考文献。你需要

if(f.equals("add"))

因为java有很多对象,主要是==用于参考比较,除非你没有为原语做这些。

如果你想检查里面是否有字符串,

if(f.contains("asdas"))

答案 1 :(得分:3)

您要将字符串与==进行比较,而是使用f.equals("add")(与其他比较相同)。通常,==只应用于原始数据类型而不是对象(如String s)。

import java.util.Scanner;
public class math {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int n1 = in.nextInt();
        System.out.print("Enter a second number: ");
        int n2 = in.nextInt();
        System.out.print("Add, subtract, multiply, or divide? ");
        String f = in.nextLine();
        System.out.println(f);
        if (f.equals("add")) {
            System.out.println(n1 + n2);
        } else if (f.equals("subtract")) {
            if (n1 > n2){
                System.out.println(n1 - n2);
            } else {
                System.out.println(n2 - n1);
            }
        } else if (f.equals("multiply")) {
            System.out.println(n1 * n2);
        } else if (f.equals("divide")) {
            if (n1>n2) {
                System.out.println(n1 / n2);
            } else {
                System.out.println(n2 / n1);
            }
        }
    }
}

此外,没有必要使用两个Scanner个实例,一个就足够了。正如旁注,字符串也有一个equalsIgnoreCase方法,它将测试相等但忽略字符的情况。

答案 2 :(得分:3)

您的字符串比较需要更改为使用String.equals()而不是==

if (f=="add"){

if ("add".equals(f)){

    }else if (f=="subtract") {

    }else if ("subtract".equals(f)) {

答案 3 :(得分:0)

虽然

f.equalsIgnoreCase("add");

将起作用,如果我输入Add,它将无效。要解决此问题,您可以用

替换f.equals(“word”)
XListProperties

允许任何情况,AdD将工作,ADD将工作,aDD将工作,等等。

希望这有帮助!