2015-12-13 5 views
-4

У меня есть два массива для проекта, который имитирует тест на множественный выбор ученика. Первый массив является 20 правильных ответов на тест:Сравнение двух массивов

(правильные ответы) правильно [] имеет эти цифры в нем:

1,4,3,3,2,2,1,1,4,5,3,3,3,5,2,4,2,5,4,5 

(ответы студента) ответы [] имеет эти цифры в нем:

0,3,3,0,2,4,0,1,4,5,0,3,3,1,2,4,2,0,4,5 

Если студент выбирает «0», они признают, что не знают ответа, и их оценка остается неизменной. Если они выбирают неправильный ответ, они теряют 0,25 марки, и если они выбирают ответ, то получают 1 знак.

Я пытаюсь понять, как создать цикл, который сравнивает элементы в каждом массиве и дает учащемуся общий класс.

Любая помощь будет высоко оценена.

Edit: Это код, который я попробовал:

двойной totalGrade = 0;

  while(i <= 20) { 

      switch(studentAnswer){ 

      case 0: 
       break; 
      case 1: 
       if(correct[i] == answers[i]) 
       { 
        totalGrade ++; 
       } 
       else { 
        totalGrade = totalGrade - 0.25; 
       } 
      case2: 
       if(correct[i] == answers[i])      
       { 
        totalGrade ++; 
       } 
       else { 
        totalGrade = totalGrade - 0.25; 
       } 
      case 3: 
       if(correct[i] == answers[i])      
       { 
        totalGrade ++; 
       }else { 
        totalGrade = totalGrade - 0.25; 
       } 
      case 4: 
       if(correct[i] == answers[i])      
       { 
        totalGrade ++; 
       } 
       else { 
        totalGrade = totalGrade - 0.25; 
       } 
      case 5: 
       if(correct[i] == answers[i])      
       { 
        totalGrade ++; 
       }else { 
        totalGrade = totalGrade - 0.25; 
       } 
      } 
      } 
+0

Используйте цикл, который идет от 0 до длины массива ответов, то индекс обоих массивов, чтобы получить текущие элементы –

ответ

0
for(int i=0; i<correct.length; i++){ 
    if(answers[i] == correct[i]){ 
     totalGrade += 1; 
    } else if(answers[i]!=0){ 
     totalGrade -= 0.25; 
    } 
} 

Edit: Это не совсем правильное использование для переключателя/сазе, так как в большинстве случаев сделать то же самое. Если вы хотите идти по этому пути, это будет больше похоже

for(int i=0; i<correct.length; i++){ 
    switch(answers[i]){ 
     case 0: 
      break; 
     case else: 
      if(answers[i] == correct[i]){ 
       totalGrade += 1; 
      } else{ 
       totalGrade -= 0.25; 
      } 
      break; 
    } 
} 
+0

Это здорово спасибо! – Fakman87

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