【问题标题】:Java first attempt on simple calculator (what's happened?) [closed]Java第一次尝试简单的计算器(发生了什么?)[关闭]
【发布时间】:2018-04-27 20:11:30
【问题描述】:

Main.java(主类)

package com.indie;

import java.util.InputMismatchException;
import java.util.Scanner;

import static com.indie.Operations.*;

public class Main {
    private static double Number1;
    private static double Number2;
    private static double Total;
    private static String Symbol;
    private static boolean noError;
    private static boolean exceptioncaught;
    public static void main(String[] args) throws InterruptedException{
        noError = false;
        while (!noError) {
            exceptioncaught = false;
            while (!exceptioncaught) {
                Scanner scanner = new Scanner(System.in);
                System.out.println("Enter your number:");
                try {
                    Number1 = scanner.nextDouble();
                } catch (InputMismatchException ex) {
                    System.out.println();
                    System.out.println("TypeERROR: You didn't input a vaild number!");
                    exceptioncaught = true;
                    System.out.println();
                    Thread.sleep(3000);
                    break;
                }
             System.out.println("What do you want to do:");
            Symbol = scanner.next();
            if (!Symbol.contains("+") && !Symbol.contains("-") && !Symbol.contains("*") && !Symbol.contains("x") && !Symbol.contains("/") && !Symbol.contains("÷")) {
                System.out.println();
                System.out.println("TypeERROR: You didn't input a valid symbol!");
                exceptioncaught = true;
                System.out.println();
                Thread.sleep(3000);
                break;
                }
                System.out.println("Enter your second number:");
                try {
                    Number1 = scanner.nextDouble();
                } catch (InputMismatchException ex) {
                    System.out.println();
                    System.out.println("TypeERROR: You didn't input a vaild number!");
                    exceptioncaught = true;
                    System.out.println();
                    Thread.sleep(3000);
                    break;
                }
                System.out.println();
                if (Symbol.contains("+")) {
                    Total = Add(Number1, Number2);
                    noError = true;
                    break;
                } else if (Symbol.contains("-")) {
                    Total = Subtract(Number1, Number2);
                    noError = true;
                    break;
                } else if (Symbol.contains("*") || Symbol.contains("x")) {
                    Total = Multiply(Number1, Number2);
                    noError = true;
                    break;
                } else if (Symbol.contains("/") || Symbol.contains("÷")) {
                    Total = Divide(Number1, Number2);
                    noError = true;
                    break;
                }
            }
        }
        System.out.println(String.valueOf(Number1)
                           +Symbol+String.valueOf(Number2) 
                           +"="+String.valueOf(Total));
    }
}

Operations.java(第二类)

package com.indie;

public class Operations {
    public static double Add(double x, double y) { return x+y; }
    public static double Subtract(double x, double y){ return x-y; }
    public static double Multiply(double x, double y){ return x*y; }
    public static double Divide(double x, double y){ return x/y; }
}

Got this result

有什么办法解决吗?它是如何以 2.0+20.0=2.0 结束的?请帮忙。 有什么方法可以阻止它给出那种结果?

其他结果:

结果 1:

输入你的号码:

2

你想做什么:

+5

输入你的第二个号码:

56

56.0+50.0=56.0

结果 2:

输入你的号码:

1

你想做什么:

+1

输入你的第二个号码:

1

1.0+10.0=1.0

【问题讨论】:

  • 你应该花一些时间调试你的作业。稍微挣扎一下就好了。
  • "Enter your number:" 后跟 Number1 = scanner.nextDouble();"Enter your second number:" 后跟 Number1 = scanner.nextDouble(); 应该是一个非常明显的拼写错误,您应该能够自己发现。虽然它可能不是唯一的。
  • 我知道这与问题无关,但 Java 工程师使用小写的驼峰式变量名
  • 代码审查堆栈交换可能会对您有所帮助codereview.stackexchange.com

标签: java console calculator


【解决方案1】:

在这部分代码中,您应该更改:

...
System.out.println("Enter your second number:");
try {
    Number1 = scanner.nextDouble();
}
...

到这里:

...
System.out.println("Enter your second number:");
try {
    Number2 = scanner.nextDouble();
}
...

您永远不会在代码中更改 Number2 的值。

【讨论】:

  • 非常感谢,我已经改变了,但如果符号变量在实际输入的运算符之后包含一个数字,我似乎仍然会得到奇怪的结果......无论如何要解决这个问题?
  • 您需要限制您的输入,以便只能输入符号而不是数字字符串
【解决方案2】:

有第二双眼睛是件好事 在您的代码中,您永远不会为 Number2 赋值

System.out.println("Enter your second number:");
try {
     Number2 = scanner.nextDouble();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多