grading ein Studenten-test basierend auf Benutzereingaben zu Antworten
Ich
- Deklarieren/Initialisieren ein array zu halten, die richtigen Antworten zu einer Frage 12 multiple-choice-quiz, dessen
Antworten sind: 'B', 'D', 'A', 'A', 'C', 'A', 'B', 'A', 'C', 'D', 'B', 'A' - Lesen Sie die Antworten für einen einzelnen Schüler in ein anderes array mit einer for-Schleife
- 'Grade' das quiz und Anzeige des folgenden:
- Student Name
- Quiz-Punktzahl in Prozent 1 dezimal (ex: 7 von 12 anzeigen würde 58,3%) der
dann
- Erste, an der Spitze des Programms, bitten Sie den Benutzer, wie viele Studenten gibt es in der Klasse
- Loop-through-Eingang und jeden Schüler die Antworten, "Grad" - quiz und zeigt das Ergebnis für jeden Schüler
- Nach allen Studierenden bearbeitet wurden, zeigen die Werte von hohen und niedrigen scores und der durchschnittlichen Punktestand in Prozent (1 dezimale)
Programm sollte am Ende Aussehen wie:
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%
Habe ich dieses array einrichten, aber ich weiß wirklich nicht, wie es zu implementieren, verwenden Sie die for-Schleifen.
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];
}
}
Danke für die Hilfe so far Jungs,
Der ich gearbeitet habe, es ein bisschen mehr, aber sein gibt mir eine Fehlermeldung nach der Eingabe der Antworten
dies ist, was ich haben
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++;
}
}
}
Die Fehlermeldung Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
zu Lab4.main(Lab4.java:29)
Ich bin mir nicht sicher, was es bedeutet oder wie es zu beheben.
- Über das hinaus, was gegeben wurde, um Sie in Ihrer Zuordnung, was haben Sie getan?
- der code unten ist, was ich getan habe, ich weiß, ich brauchen, um in for-Schleifen und den Bezug des arrays, aber ich kann nicht herausfinden, wie das zu tun. Ich war nicht in der Lage, um es für die Klasse Zeit, wo er Sprach über die Masse der array-Nutzung so bin ich ziemlich verloren
- Stack-Überlauf ist nicht ein Weg, um Menschen, die schreiben Sie den code für Sie. Es ist eine Art zu Fragen, spezifische Fragen über die Sprache, kann nur erklärt werden durch erfahrene Programmierer. Dies ist die grundlegende java-von dem wir hier sprechen, nichts kompliziert.
- ich verlange nicht, für jemanden zu schreiben, den code für mich, sondern nur um mir eine basis auf, was muss ich tun nächsten, um den richtigen Ausgang. ich habe gerade enthalten alles, was erforderlich war von mir nur so dass ich genügend Informationen, wie möglich. ich habe die letzten Stunden versucht zu schauen, die Dinge und ich habe erfolglos gewesen.
- Sie können Schleife über jede Antwort, und bitte daher um eine zugehörige Antwort per Schleife über jedes element im array:
for (int i = 0; i < userAnswers.length; ++i) { /* current right answer is answerKey[i]; you need to fill in userAnswers appropriately */ }
- Ich danke Ihnen sehr dies tatsächlich klärt sich vieles auf.
- Ich denke, diese Frage ist zulässig. Er verlangt für die Fehlersuche auf ein bestimmtes Thema und Hinweise, wie dieses problem anzugehen. Es ist nicht die beste Frage, aber ich bin mir nicht sicher, dass Sie es verdient, diese downvotes.
- Vielleicht zeigen sich die FAQ einen neuen Benutzer und nicht als bash Ihnen auf den Kopf mit einem großen Stock
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Sprung in ein schnelles tutorial auf arrays -> http://www.learn-java-tutorial.com/Arrays.cfm#.US09R-sjqy0
Wie gesagt in den Kommentaren, wir sind nicht dabei, schreiben Sie den code für Sie, aber ich werde versuchen, Ihnen einige hilfreiche Hinweise:
Ihre gehen zu wollen, um den Benutzer auffordern, für wie viele Schüler in der Klasse, dies sollte wurden unterrichtet in Ihrer Klasse. Akzeptieren Sie, dass die Eingabe und speichern Sie in einer Variablen.
Erstellen Sie eine
while
Schleife zu akzeptieren, die Daten für jeden Schüler. Die Schleife läuft nur so oft wie der Benutzer angegeben, es waren Studenten.In der Schleife akzeptieren alle Ihre Studierenden-Daten, Antworten, Namen, etc.
Nach dem sammeln alle Daten, die Sie brauchen zu vergleichen, die die Schüler beantworten mit dem Schlüssel. Sie können dies tun, mit einem
for
Schleife oder einwhile
Schleife. Ich würde empfehlen, eine for-Schleife, erstellen Sie eine Art von Zähler, um mit, wie viele Antworten richtig waren oder falsch, Ihre Wahl dann die Mathematik zu tun, nachdem die Schleife zu bekommen Ihren Anteil.Drucken Sie das Ergebnis und starten Sie den loop.
Java-Dokumentation zu Arrays: http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Array.html
Einige schnelle Array-spezifische Hinweise:
Zugriff auf ein array:
Hoffe, das hilft!
System.out.println("Enter quiz score answers"); userAnswers[answerKey.length] = s.next().charAt(0);
ist das der richtige Weg, dies zu tun?String tempAnswers = s.nextLine();
dann tunuserAnswers = tempAnswers.split(",");