2014-01-31 2 views
0

Я пытаюсь вернуть разные значения массива в соответствии с условием. Вот мой код, но он сделал ошибку. Пожалуйста, помогите мне выяснить, в чем проблема.Как вернуть разные значения массива в соответствии с условием?

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; 
     } 
    }  
} 
+0

вам необходимо сообщить нам более подробную информацию об ошибке – SirBraneDamuj

ответ

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.

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; 
} 
0

Вы имеете мертвый код в программе.

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

Эти loop не имеет смысла, так как в первой итерации цикла вы используете return.

Также отсутствует тип метода return, который должен находиться за пределами 2 петель.

Смежные вопросы