2016-03-30 53 views
0
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(); 

     String alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
     int character=(int)(Math.random()*26); 
     String s=alphabet.substring(character, character+1); 

     Random r = new Random(); 

     for (int 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(); 
     int letter = Integer.parseInt(response); 

     long endTime = System.currentTimeMillis(); 

     String outcome; 
     if (letter == character+1) 
      outcome = "Correct!"; 
     else 
      outcome = "Incorrect."; 

     long reactionTime = endTime - startTime; 

     System.out.println("That took " + reactionTime + " milliseconds"); 
     System.out.println("Thank you " + name + ", goodbye."); 
    } 
} 

这是我的代码。我正在询问用户字母表中的下一个字母是什么。我无法弄清楚正确的字符串结果。我想让程序知道答案是否正确。线程“main”中的异常java.lang.NumberFormatException:用于输入字符串:“G”

回答

0

很明显,你会得到NumberFormatException的,如果你的秘密字符串“G”为整数。 你应该检查 letter.equals(alphabet.substring(character+1, character+2))而不是letter == character+1

这里被修正为你

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."; 
} 
0

你所得到的NumberFormatException因为你试图通过执行以下操作来解析与字母组成的字符串到整数

int letter = Integer.parseInt(response); 

如果你想将它转换为一个整数,那么你应该这样做:

int letter = Character.getNumericValue(response.charAt(0)); 
相关问题