Оценка теста студентов на основе ответов пользователя
Мне пришлось
- Объявите / инициализируйте массив для хранения правильных ответов на 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
Надеюсь это поможет!