gpt4 book ai didi

java - 简单的java计算器在if else语句中不会输出正确的结果

转载 作者:行者123 更新时间:2023-12-01 10:03:24 25 4
gpt4 key购买 nike

不确定我在这里做错了什么,但输出结果为

输入2个数字15 25(例如)选择是否要加、减、乘或除。

用户选择添加。然后什么也没有发生?

import java.util.Scanner;

public class Lab1 {

public static void main(String[] args) {

@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);

System.out.println("Enter 2 numbers ");
int numb1 = input.nextInt();
int numb2 = input.nextInt();
System.out.println("Would you like to add, multiply, subtract or divide");
String add = input.next();
String multiply = input.next();
String divide = input.next();
String subtract = input.next();

if (input.equals(add)) {

System.out.println(numb1 + " + " + numb2 + " is: " + (numb1 + numb2));

}

else if (input.equals(multiply)) {
System.out.println(numb1 + " * " + numb2 + " is: " + (numb1 * numb2));
}

else if (input.equals(divide)) {
System.out.println(numb1 + " / " + numb2 + " is: " + (numb1 / numb2));
}

else if (input.equals(subtract)) {
System.out.println(numb1 + " - " + numb2 + " is: " + (numb1 - numb2));
}

else {
System.out.println("Try again");
}
}
}

最佳答案

您的问题在这里:

String add = input.next();
String multiply = input.next();
String divide = input.next();
String subtract = input.next();

每一行都会询问 Scanner用于输入并将其分配给单独的字符串。您可以通过使用调试器或添加 System.out.println(add); 来显示此处实际发生的情况。上面的 block 之后的语句。然后你这样做:

if (input.equals(add)) {

您现在正在检查 Scanner 是否对象等于 add目的。由于它们是不同的类型,因此它们永远不会相等。

您应该做的是首先将选项设置为常量:

static final String ADD = "add";

然后您需要获取输入:

String choice = input.nextLine();

然后您可以检查选择是否等于您的常量之一。

if (choice.equals(ADD))

请注意 next() 将返回下一个“ token ”,由 Scanner 中设置的分隔符确定。您可能想要的是 nextLine() ,这将获得一整行输入。在这种情况下,这可能并不重要,但如果您正在寻找完整的输入,则可能会重要。也就是说,有are some pitfalls你应该了解一下。

如何使用枚举

由于评论中提出了这一问题,因此以下是如何使用枚举来实现这一点。正如您所看到的,当您需要添加运算符时,这变得非常可扩展:您不再需要担心修改 main函数,并且可以简单地添加新的运算符及其行为。仅当 Commands 时,您才会执行此操作永远不需要携带状态,而只需要携带行为,就像他们在这里所做的那样。这种设置对于必须理解各种标记的命令行程序特别有用(例如,您可以实现 equals 或其他方法以允许 +Addadd 全部等效) )。

import java.util.Scanner;

public class Calculator {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter 2 numbers ");
int numb1 = input.nextInt();
int numb2 = input.nextInt();
System.out.println("What would you like to do to these two numbers? Commands available are:");
for (Command command : Command.values()) {
System.out.println(command);
}
System.out.println("");
String operator = input.next();
for (Command command : Command.values()) {
if (command.toString().equals(operator)) {
command.printResult(numb1, numb2);
}
}
}

public interface CommandInterface {
public void printResult(int x, int y);
}

public enum Command implements CommandInterface {
ADD {
public void printResult(int x, int y) {
System.out.println(x + " + " + y + " is: " + (x + y));
}
},
SUBTRACT {
public void printResult(int x, int y) {
System.out.println(x + " + " + y + " is: " + (x + y));
}
},
MULTIPLY {
public void printResult(int x, int y) {
System.out.println(x + " + " + y + " is: " + (x + y));
}
},
DIVIDE {
public void printResult(int x, int y) {
System.out.println(x + " + " + y + " is: " + (x + y));
}
};
}
}

运行时示例:

Enter 2 numbers 
1 2
What would you like to do to these two numbers? Commands available are:
ADD
SUBTRACT
MULTIPLY
DIVIDE

ADD
1 + 2 is: 3

进程已完成,退出代码为 0

关于java - 简单的java计算器在if else语句中不会输出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36635908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com