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

问题描述 投票:1回答:4

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

java math if-statement
4个回答
3
投票

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

if (f=="add"){

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

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

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

等等


3
投票
if (f=="add")

比较参考。你需要

if(f.equals("add"))

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

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

if(f.contains("asdas"))

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方法,它将测试相等但忽略字符的情况。


0
投票

f.equals("add");

将工作,如果我输入添加,它将无法正常工作。要解决此问题,您可以将f.equals(“word”)替换为

f.equalsIgnoreCase("add");

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

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.