创建2个随机输入数字然后询问解决方案以及用户是否需要添加另外2个数字

时间:2016-03-07 00:07:03

标签: java

import java.util.Scanner;
public class mathstrainer {

    public static void main(String[] args) {
    Scanner answerinput=new Scanner(System.in);
    System.out.println("Welcome to Maths Trainer!");
    boolean choice=true;
    int max=15;
    int min=1;
    while(choice=true){
    int number1=(int)(Math.random()*max+min);
    int number2=(int)(Math.random()*max+min);
    System.out.println("what is "+number1+"+"+number2+"? >");
    int answer=answerinput.nextInt();
    int solution=number1+number2;
if(answer==solution){
    System.out.println("Correct! Well done!");
    System.out.println("Would you like another question? (Y/N)");
    String choiceword=answerinput.nextLine();
    choiceword=choiceword.toUpperCase();
    char choiceletter=choiceword.charAt(0);
    if(choiceletter=='Y'){
        choice=true;
    }
    else{
        choice=false;
    }

}
else{
    System.out.println("Incorrect! The right answer is "+solution);
    System.out.println("Would you like another question? (Y/N)");
    String choiceword=answerinput.nextLine();
    choiceword=choiceword.toUpperCase();
    char choiceletter=choiceword.charAt(0);
    if(choiceletter=='Y'){
        choice=true;
        }
    else{
        choice=false;
    }
}
}}}

问题来自:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at mathstrainer.main(mathstrainer.java:36)

我哪里出错了,我该如何解决?

我正在尝试使用布尔变量创建一个循环来充当问题创建者和重复者,但是可以通过将布尔值设置为false来停止循环。

此外,问题甚至意味着什么?我似乎经常遇到同样的问题。

1 个答案:

答案 0 :(得分:2)

当您调用strcat扫描程序读取整数并继续在同一行之后,answerinput.nextInt()将读取输入,直到找到换行符,在您的情况下返回一个空字符串。 可能的解决方案:

  • answerinput.nextLine()之后添加nextLine()以阅读换行符。
  • nextInt()替换为nextLine()next()将在输入中找到下一个标记。