2016-06-29 8 views
0

In dieser Frage gibt es ein separates Array von Frage, Schlüssel der Frage, Optionen, Antworten. Der Benutzer hat die Fragen und ihre vier Optionen gesehen und wird die Antwort eingeben. Der Antwort-Array wird mit dem Tastenfeld verglichen werden, die Option ist die wahre korrekte Anzeige AntwortWie bekomme ich die Noten von arithmetischen Quizfragen? Dies ist vergleichbar mit Multiple Choice (MCQS) mit ArrayList? Was ist falsch in meinem Code?

Sie können in einer einzigen Zeile eingegeben werden, zB 34 7 13 100 81 3 9 10 321 12 könnte der Schlüssel für ein 10-Fragen-Quiz seines

IN THIS CODE ich habe nur 2 FRAGE UND 2 SCHLÜSSEL UND 8 OPTIONEN 4 für jede Frage

package p16; 

    import java.util.ArrayList; 
    import java.util.Scanner; 

    public class P16 { 
    public static void main(String[] args) { 
    // TODO code application logic here 

    ArrayList<String> items = new ArrayList<String>(); 

     int C=0,w=0; 

    items.add("What is your id"); 
    items.add(1, "what is your uni"); 

    ArrayList<String> key = new ArrayList<String>(); 

    key.add("2"); 
    key.add("2"); 

    ArrayList<String> Options = new ArrayList<String>(); 

    Options.add("1"); 
    Options.add("2"); 
    Options.add("3"); 
    Options.add("4"); 

    Options.add("1"); 
    Options.add("2"); 
    Options.add("3"); 
    Options.add("4"); 

    ArrayList<String> Answer = new ArrayList<String>(); 

    for(int i=0;i<2;i++) 
    { 
     System.out.println("items(i)"); 

     for(int k=0;k<12;k+=4) 
    { 
     Options.get(k); 
     Options.get(k+1); 
     Options.get(k+2); 
     Options.get(k+3); 
     } 
     System.out.print("Enter :"); 
     Scanner S=new Scanner(System.in); 
     int a = S.nextInt();  
     } 
     for(int j = 0;j<2;j++) 
     { 
     if(Answer.get(j).equals(key.get(j))) 
     {C++; 
       } 
     else 
     {w++; 
     }}} 

OUTPUT

 run: 
    items(i) 
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 8, Size: 8 
    at java.util.ArrayList.RangeCheck(ArrayList.java:547) 
    at java.util.ArrayList.get(ArrayList.java:322) 
    at p16.P16.main(P16.java:61) 
    Java Result: 1 

BUILD SUCCESSFUL (Gesamtzeit: 13 Sekunden)

Antwort

0

Bevor wir an den Code zu bekommen gibt es eine über Reiten Problem: Sie versuchen, ein Multi-Choice-Algorithmus wieder zu verwenden, bitten um Zahlen Option, aber die Fragen, die Sie Fragen sind offene Textfragen. Zum Beispiel "Wie heißt du?". Sie können für solche Fragen keinen Multi-Choice-Ansatz verwenden. Beginne damit, ganz klar zu entscheiden, welche Fragen du stellst und wie die Antworten zu verwenden sind.


Es gibt viele Probleme mit diesem Code. Es sieht so aus, als ob du versucht hast, ein ähnliches Programm zu nehmen und es zu ändern, aber du hast das Original nicht verstanden. Mein starker Ratschlag: Fang noch einmal an. Brechen Sie das Problem in einzelne Schritte, testen Sie jeden Schritt, bevor Sie versuchen, das Programm als Ganzes auszuführen.

Fehler hier:

Fehler 1: Sie erhalten eine Antwort vom Benutzer

int a = S.nextInt(); 

aber nie die Variable verwenden. Sie müssen etwas mit diesem "a" -Wert machen. Siehe den nächsten Fehler.

Fehler 2: Sie haben eine ArrayList namens Antwort, aber nie irgendwelche Werte in sie. Ich vermute, dass Ihre Absicht war, eine Reihe von Antworten zu sammeln und sie in die Liste aufzunehmen, aber Sie haben das nicht getan.

Ändern Sie Ihren Code, um den Wert von a in die Antwortliste aufzunehmen.

Fehler 3: Sie haben diesen Code

for(int k=0;k<12;k+=4) 
{ 
    Options.get(k); 
    Options.get(k+1); 
    Options.get(k+2); 
    Options.get(k+3); 
} 

es Werte erhalten, aber mit ihnen nichts tun, dient also keinen Zweck. Hier schlägt Ihr Programm gerade fehl. Sie haben 8 Werte in das Optionsarray eingegeben (das sind die Indizes 0 bis 7), aber Sie erlauben k, höher als 7 zu gehen.

ABER: wie ich gesagt habe, haben Sie keinen Grund, diesen Code zu haben, wie er derzeit steht. Warum rufen Sie

Options.get(k) 

Sie verwenden das Ergebnis nicht.

Fehler 4: Sie drucken Ihre Ergebnisse nicht.

Fehler 5: Sie drucken wahrsten Sinne des Wortes "Elemente (i)", meine Vermutung ist, dass Sie

System.out.println("items(" + i + ")" + items(i)); 

bestimmt Empfohlene Aktion:

das Problem brechen in zwei Schritten:

  1. Rufen Sie die Antworten vom Benutzer ab und speichern Sie sie in der Antwortliste. Überprüfen Sie dies, indem Sie den Inhalt der Liste drucken.

  2. Vergleichen Sie die Antwortliste mit den erwarteten Antworten (ich denke, das ist, was Schlüssel ist). Drucke die Ergebnisse aus.

+0

djna jetzt meinen Code –

+0

Schlüssel ist für die korrekte Antwort –

+0

siehe Wie key.add (2), um die richtige Antwort geben: „Was ist Ihr Name?“ Ich denke, Sie verwenden etwas aus einer Multiple-Choice-Frage, die für Namen und Universitäten nicht funktioniert. – djna