2016-03-31 11 views
-1
import java.util.Scanner; 
import java.util.Random; 

public class ResponseTimeProject 
{ 
    public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 
    Random rand = new Random(); 

    System.out.print("Please enter your full name: "); 
    String name = in.nextLine(); 

    System.out.println("Hello " + name + ". Please answer as fast as you can." + "\n\nHit <ENTER> when ready for the question."); 
    in.nextLine(); 

    for (int count = 0; count < 4; count ++) { 

     String alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

     int character=(int)(Math.random()*26); 

     String s = alphabet.substring(character, character+1); 

     Random r = new Random(); 
     int i; 

     for (i = 0; i < 1; i++) { 
     System.out.println(alphabet.charAt(r.nextInt(alphabet.length()))); 
     } 

     long startTime = System.currentTimeMillis(); 

     System.out.print("What is the next letter in the alphabet?" + " "); 
     String response = in.nextLine(); 

     long endTime = System.currentTimeMillis(); 

     String outcome; 

     if (alphabet.substring(character+1, character+2).equals(response)) { 
     outcome = "Correct!"; 
     } else { 
     outcome = "Incorrect."; 
     } 

     long reactionTime = endTime - startTime; 
     System.out.println(outcome); 
     System.out.println("The average time it took you was " + reactionTime + " milliseconds"); 
     System.out.println("Thank you " + name + ", goodbye."); 

    } 
    } 
} 

HILFE: Dieser Code läuft, aber es gibt mir die falsche Antwort. Ich weiß nicht, was falsch ist. Es druckt falsch für das richtige Ergebnis. Nicht sicher, was ich beheben mussNicht korrekt gedruckt, aber immer noch

+1

'System.out.println (alphabet.charAt (r.nextInt (alphabet.length())));' ?? Ich denke, Sie müssen beginnen, indem Sie die JavaDoc-Einträge für diese Methoden lesen – MadProgrammer

+0

Der Code fragt, was der nächste Buchstabe ist, habe ich den richtigen nächsten Buchstaben, aber es sagt falsch – MadSusz

+2

Vielleicht ist er ein ... verrückter Programmierer. – Gendarme

Antwort

0

Der betreffende Code ist wirklich eine totale Unordnung (Teilstring, um ein Zeichen aus einem String, Schleifen einer einzelnen Iteration, usw.) zu erhalten. Aber das grundlegende Problem in Bezug auf die Frage ist, dass der "nächste Buchstabe im Alphabet" von einer Ausgabe abhängt, die gedruckt, aber niemals gespeichert wird. Es ist derzeit

for (i = 0; i < 1; i++) { 
    System.out.println(alphabet.charAt(r.nextInt(alphabet.length()))); 
} 

und daher nie gespeichert, so gibt es nichts zu vergleichen.

Speichern Sie das nächste Zeichen und drucken Sie es.

Dann im Vergleich, für die Antwort, überprüfen Sie die Antwort auf einen tatsächlichen Wert, nicht einige zufällige Teilzeichenfolge aus dem Alphabet String.

response = in.nextLine(); 
char chkChar = response.charAt(0); 
if (chkChar == nextLetter) { 
    ... 
} 
+1

Um nur darauf hinzuweisen, speichert der String 'alphabet' alle Alphabete in Großbuchstaben. Wenn OP die Groß-/Kleinschreibung nicht beachten möchte, kann er 'toUpperCase()' für die Benutzereingabe verwenden. Andernfalls werden Eingaben in Kleinbuchstaben ebenfalls als falsch angesehen. @MadSusz – Tacocat

+0

Bravo, @KevinO, für den Versuch, eine richtige Antwort zu formulieren,> _ < – Tacocat

Verwandte Themen