Оценка теста студентов на основе ответов пользователя

Мне пришлось

  • Объявите / инициализируйте массив для хранения правильных ответов на 12 вопросов с несколькими вариантами ответов, ответы которых: "B", "D", "A", "A", "C", "A", "B", " A', 'C', 'D',' B ',' A '
  • Прочитайте ответы одного ученика в другой массив, используя цикл for
  • "Оцените" тест и отобразите следующее:
    • Имя ученика
    • Результат теста в процентах к 1 десятичному знаку (например, 7 из 12 будут отображать 58,3%)

а потом

  • Во-первых, в начале вашей программы спросите пользователя, сколько учеников в классе
  • Просматривайте и вводите ответы каждого учащегося, проверяйте оценку и отображайте результаты для каждого учащегося.
  • После того, как все учащиеся были обработаны, отобразите значения высокого и низкого баллов и средний балл теста в процентах (1 десятичный знак)

Программа должна выглядеть так:

How many students are in the class? 2
Enter name for Student 1: Bob
Enter quiz score answers: <allow user to input 12 answers>
Bob
66.7%
Enter name for Student 2: Fred
Enter quiz score answers: <allow user to input 12 answers>
Fred
91.7%
The high score is 11 and the low score is 8
Average is: 79.2%

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

import java.util.*;

public class Lab4 {
public static void main(String[] args){
    Scanner s= new Scanner(System.in);
    String name;

    char [] answerKey= { 'B' , 'D' , 'A' , 'A' , 'C' , 'A' , 'B' , 'A' , 'C' , 'D' , 'B' , 'A' };
    char [] userAnswers = new char[answerKey.length];



}
}

Спасибо за помощь, ребята, я работал над этим немного больше, но это дает мне ошибку после ввода ответов, это то, что у меня есть

import java.util.*;
import java.text.*;

public class Lab4 {
    public static void main(String[] args){
    Scanner s= new Scanner(System.in);
    String input;
    int students;
    int correctAnswers=0;

    char [] answerKey= { 'B' , 'D' , 'A' , 'A' , 'C' , 'A' , 'B' , 'A' , 'C' , 'D' , 'B' , 'A' };
    char [] userAnswers = new char[answerKey.length];

        DecimalFormat df = new DecimalFormat("#0.0");

    System.out.print("how many students are in your class?");
    input = s.nextLine();
    students=Integer.parseInt(input);

    String [] name = new String[students];

    int j=1;
    while(students>=j)
    {
        System.out.print("Enter name of student" + j + ": ");
        name[j] = s.nextLine();

        System.out.print("Enter quiz score answers");
            userAnswers[answerKey.length] = s.next().charAt(0);

        for (int i = 0; i < userAnswers.length; ++i)
        {
            if(userAnswers[i]==answerKey[i]);
            correctAnswers++;
        }

        System.out.print((df.format(correctAnswers/answerKey.length)) + "%");
    j++;

    }
    }
}

Сообщение об ошибке "Исключение" в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 12 в Lab4.main(Lab4.java:29)

Я не уверен, что это значит или как это исправить.

1 ответ

Решение

Вот переход к быстрому учебнику по массивам -> http://www.learn-java-tutorial.com/Arrays.cfm

Как указано в комментариях, мы не собираемся писать код для вас, но я постараюсь предоставить несколько полезных указателей:

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

Создать while цикл, чтобы принять данные для каждого студента. Цикл должен выполняться только столько раз, сколько пользователь заявил, что есть студенты.

В цикле примите все ваши данные ученика, ответы, имена и т. Д.

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

Распечатайте результаты и перезапустите цикл.

Документация по Java для массивов: http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Array.html

Несколько быстрых указателей Array:

Доступ к массиву:

String[] array = {"a", "b", "c", "d"}; //creates array
System.out.println( array[0] ); //prints out "a"
System.out.println( array.length ); //prints out "4", the number of elements in the array

Надеюсь это поможет!

Другие вопросы по тегам