如何根据条件返回不同的数组值?

时间:2014-01-31 18:35:51

标签: java arrays return

我正在尝试根据条件返回不同的数组值。这是我的代码,但它犯了错误。请帮我找出问题所在。

private static String subject[] = {"Mathematics", "English"};
private static String studentNum[] = {"1", "2"};
private static int marks[][] = {{56,51},   // Student 1 mark for Mathermatics
                                {69,85}};  // Student 2 mark for English

public static double AverageMarks(String aCode) {

    double sum[] = new double[subject.length];
    double average[] = new double[subject.length];

    for(int j=0;j<subject.length;j++) {
        for(int i=0;i<studentNum.length;i++) {
            sum[j] += marks[j][i];
            average[j] = (sum[j] / studentNum.length); // average[0] is the average mark of Mathermatics and average[1] is the average mark of English
        }

        if (aCode.equals(subject[j])) {
            return average[j];
        }
        else {
            return 0;
        }
    }    
}

3 个答案:

答案 0 :(得分:2)

你快到了。这条线

average[j] = (sum[j] / studentNum.length);

应该不在嵌套for范围内,因为嵌套的for用于对每个成绩求和,完成后应将总和分配给sum[j]

此外,您应该将return 0放在函数的末尾,或者for循环只循环一次(因为如果条件aCode.equals(...)不正确,它将会return 0)在第一个循环中。

public static double averageMarks(String aCode)
{
    double sum[] = new double[subject.length];
    double average[] = new double[subject.length];

    for (int j = 0; j < subject.length; j++) {
        for (int i = 0; i < studentNum.length; i++) {
            sum[j] += marks[j][i];

        }
        average[j] = (sum[j] / studentNum.length); // average[0] is the average mark of Mathermatics and average[1] is the average mark of English

        if (aCode.equals(subject[j])) {
            return average[j];
        }
    }
    return 0;
}

注意:我建议您遵循Java命名约定。您的方法应该像methodName一样调用,而不是MethodName

答案 1 :(得分:0)

我的初步看,我注意到这一点,因为你没有详细描述你的错误我布置了我看到的第一件事可能是错的。

if (aCode.equals(subject[j])) {return average[j];}
    else {return 0;}

我认为这行代码是错误的。它永远不会到外循环来检查不同的主题,因为它直接进入else.

public static double AverageMarks(String aCode) {

    double sum[] = new double[subject.length];
    double average[] = new double[subject.length];

    for(int j=0;j<subject.length;j++){
        for(int i=0;i<studentNum.length;i++) {
            sum[j] += marks[j][i];
         }
        average[j] = (sum[j] / studentNum.length);
        if (aCode.equals(subject[j])) return average[j];
    }
    return 0;
}

答案 2 :(得分:0)

你在程序中有死代码。

for(int j=0;j<subject.length;j++)

这些loop没有用,因为在循环的第一次迭代中,您正在使用return

还缺少一种return类型的方法,它必须在2个循环之外。