2016-03-31 18 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

問題のコードは本当に完全な混乱(文字列から文字を取得するための部分文字列、1回の反復のループなど)です。しかし、この問題に関する根本的な問題は、「アルファベットの次の文字」は印刷されたものの、保存されていない出力に依存するということです。現在は

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

であり、保存されていないので比較することはありません。

したがって、次の文字を保存してから印刷してください。

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

次に、レスポンスでは、アルファベット文字列の一部のランダムな部分文字列ではなく、実際の値に対して応答を確認します。

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

また、指摘すると、文字列 'alphabet'はすべてのアルファベットを大文字で格納します。 OPが大文字小文字を区別しないことを望むなら、彼はユーザ入力に対して 'toUpperCase()'を使うことができます。それ以外の場合、小文字の入力も間違っていると見なされます。 @MadSusz – Tacocat

+0

Bravo、@KevinO、適切な回答を定式化しようとしています。> _ < – Tacocat

関連する問題