首页 > 解决方案 > Java,在要求输入时出现简单数学运算的错误

问题描述

我现在正在学习 Java,但我不知道为什么我的代码会产生错误的结果。所以,我的代码是一个简单的计算器,要求用户输入,它有 4 个条件。我正在测试其中一个,重要的一个,以及我要输入的任何内容,它都会给我答案 ,,0.0" 。条件是要求进行数学运算(作为字符串,我将其转换为 char),以及两个数字(例如:加 50 34)。我尝试了一个小时来查看问题所在,我找不到任何东西,我什至搜索了我正在学习的课程,一切都像那里一样,但我没有知道我的代码发生了什么。有人可以向我解释吗?感谢它。

public static void main(String[] args) {
    double[] leftVals = {100.0d, 25.0d, 225.0d, 11.0d};
    double[] rightVals = {50.0d, 92.0d, 17.0d, 3.0d};
    char[] opCode = {'d', 'a', 's', 'm'};
    double[] result = new double[opCode.length];
    if (args.length == 0) {
        for (int i = 0; i < opCode.length; i++) {
            result[i] = execute(opCode[i], leftVals[i], rightVals[i]);
        }
        for (double currentResult : result)
            System.out.println(currentResult);
    } else if (args.length == 1 && args[0].equals("interactive"))
    executeInteractively();

    else if (args.length == 3) {
        handleCommands(args);

    }else {
        System.out.println("You entered the wrong number of character. Your input needs to contain a character (a, s, n, d) followed by two numbers.");
    }
}

static void executeInteractively () {
    System.out.println("Please enter an operation and two numbers: ");
    Scanner scanner = new Scanner(System.in);
    String userInput = scanner.nextLine();
    String [] parts = userInput.split(" ");
    performOperations(parts);
}

private static void performOperations(String[] parts) {
    char opCode = opCodes(parts[0]);
    double leftVal = number(parts[1]);
    double rightVal = number(parts[2]);
    double result = execute(opCode, leftVal, rightVal);
    System.out.println(result);
}

private static void handleCommands(String[] args) {
    char opCode = args[0].charAt(0);
    double leftVal = Double.parseDouble(args[1]);
    double rightVal = Double.parseDouble(args[2]);
    double result = execute(opCode, leftVal, rightVal);
    System.out.println(result);
}


static double execute (char opCode, double value1, double value2) {
    double result;
    switch (opCode) {
        case 'a':
            result = value1 + value2;
            break;
        case 's':
            result = value1 - value2;
            break;
        case 'm':
            result = value1 * value2;
            break;
        case 'd':
            result = value2 != 0 ? value1 / value2 : 0.0D;
            break;
        default:
            System.out.println("Invalid opCode: " + opCode);
            result = 0.0d;
            break;
    }
    return result;
}
static char opCodes (String name) {
    char opCode = name.charAt(0);
    return opCode;
}
static double number (String theNumber) {
    String[] numberOfWords = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
    double value = 0d;
    for (int index = 0; index<numberOfWords.length; index++ ){
        if (theNumber.equals(numberOfWords[index])) {
            value = index;
            break;
        }
    }
    return value;
}

标签: javamathuser-input

解决方案


您已经定义了number()接受 String 并返回 double 的方法。它支持的字符串类型是“one”、“two”等,而不是“1”、“2”……

您说过您尝试了 input add 50 34,并且根据您的代码,这将始终返回 0.0

尝试提供输入add five three,看看你得到什么输出。

您当前的代码不支持输入大于 9 的计算。用户必须以单词的形式提供值,所以他们不能输入 9,他们必须输入单词“九”。


推荐阅读