簡體   English   中英

為什么這個 output 0.0 0.0 0.0 0.0 而不是 execute 方法的返回計算?

[英]Why does this output 0.0 0.0 0.0 0.0 rather than the execute method's return calculations?

我試圖讓 main 方法為 arrays 的每次迭代打印 execute 方法的 switch 語句的返回結果。但是,output 是:

0.0 0.0 0.0 0.0

誰能告訴我為什么會這樣?

    public static void main(String[] args) {
        double[] leftVal = {100.0d, 25.0d, 225.0d, 11.0d};
        double[] rightVal = {50.0d, 92.0d, 17.0d, 3.0d};
        char[] opCodes = {'d', 'a', 's', 'm'};
        double[] results = new double[opCodes.length];

        for (int i = 0; i < opCodes.length; i++) {
            execute(opCodes[i], leftVal[i], rightVal[i]);
        }

        for (double currentResult : results) {
            System.out.println(currentResult);
        }
    }

    static double execute(char opCodes, double leftVal, double rightVal) {
        double result;
        switch (opCodes) {
            case 'a':
                result = leftVal + rightVal;
                break;
            case 's':
                result = leftVal - rightVal;
                break;
            case 'm':
                result = leftVal * rightVal;
                break;
            case 'd':
                result = rightVal != 0 ? leftVal / rightVal : 0.0d;
                break;
            default:
                System.out.println("Invalid opCode: " + opCodes);
                result = 0.0d;
                break;
        }
        return result;
    }
}

您缺少作業,沒有填充results數組。 您可能正在尋找這個:

for (int i = 0; i < opCodes.length; i++) {
  results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
}

我看到的第一件事是,你不使用 return double

    public static void main(String[] args) {
        double[] leftVal = {100.0d, 25.0d, 225.0d, 11.0d};
        double[] rightVal = {50.0d, 92.0d, 17.0d, 3.0d};
        char[] opCodes = {'d', 'a', 's', 'm'};
        double[] results = new double[opCodes.length];

        for (int i = 0; i < opCodes.length; i++) {
            results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
        }

        for (double currentResult : results) {
            System.out.println(currentResult);
        }
    }

    static double execute(char opCodes, double leftVal, double rightVal) {
        double result;
        switch (opCodes) {
            case 'a':
                result = leftVal + rightVal;
                break;
            case 's':
                result = leftVal - rightVal;
                break;
            case 'm':
                result = leftVal * rightVal;
                break;
            case 'd':
                result = rightVal != 0 ? leftVal / rightVal : 0.0d;
                break;
            default:
                System.out.println("Invalid opCode: " + opCodes);
                result = 0.0d;
                break;
        }
        return result;
    }
}

它應該像這樣工作,如果你的方法像它應該的那樣工作

在 for 語句中,沒有用值填充數組的賦值。

for (int i = 0; i < opCodes.length; i++) {
        execute(opCodes[i], leftVal[i], rightVal[i]);
    }

在您的 execute 方法中,您返回 double 結果。 使用它作為賦值來填充結果數組。

for (int i = 0; i < opCodes.length; i++) {
        results[i] = execute(opCodes[i], leftVal[i], rightVal[i]);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM