1

我无法让这个程序正常工作,它需要 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

4 回答 4

3
if (f=="add")

比较参考。你需要

if(f.equals("add"))

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

如果你想检查它是否有一个字符串,

if(f.contains("asdas"))
于 2012-09-15T16:00:43.773 回答
3

您将字符串与==,进行比较f.equals("add")(与其他比较相同)。一般来说,==应该只用于原始数据类型而不是对象(如Strings)。

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方法可以测试相等但忽略字符的大小写。

于 2012-09-15T16:00:46.163 回答
3

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

if (f=="add"){

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

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

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

等等

于 2012-09-15T16:01:55.670 回答
0

尽管

f.equals("add");

会起作用,如果我输入添加,它将不起作用。要解决此问题,您可以将 f.equals("word") 替换为

f.equalsIgnoreCase("add");

这允许任何情况下,AddD 将起作用,ADD 将起作用,aDD 将起作用,等等。

希望这可以帮助!

于 2015-08-02T00:48:32.557 回答