2016-03-31 3 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."); 

    } 
    } 
} 

ПОМОЩЬ: Этот код работает, но это дает мне неправильный ответ. Я не знаю, что не так. Он печатает неправильно для правильного результата. Не знаю, что мне нужно исправить.Не печатается правильно, но все еще работает

+1

'System.out.println (alphabet.charAt (r.nextInt (alphabet.length())));' ?? Я думаю, вам нужно начать с чтения записей JavaDoc для этих методов. – MadProgrammer

+0

Код спрашивает, что такое следующее письмо, я ввел правильную следующую букву, но он говорит неверно. – MadSusz

+2

Может быть, он ... сумасшедший программист. – Gendarme

ответ

0

Этот вопрос действительно является полным беспорядком (подстрока, чтобы получить символ из строки, петель одной итерации и т. Д.). Но основной вопрос, связанный с вопросом, заключается в том, что «следующая буква в алфавите» зависит от вывода, который печатается, но никогда не сохраняется. В настоящее время

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

и поэтому не сохраняется, поэтому сравнивать нечего.

Итак, сохраните следующий символ, а затем распечатайте его.

char nextLetter = alphabet.charAt(r.nextInt(alphabet.length()); 

Тогда в сравнении, для ответа, проверьте реакцию против фактического значения, а не какие-то случайные подстрок из алфавита String.

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

Кроме того, просто чтобы указать, строка 'alphabet' хранит все алфавиты в верхнем регистре. Если OP желает нечувствительности к регистру, он может использовать 'toUpperCase()' на входе пользователя. В противном случае входы нижнего регистра также будут считаться неправильными. @MadSusz – Tacocat

+0

Bravo, @KevinO, за попытку сформулировать правильный ответ,> _ < – Tacocat

Смежные вопросы