Integer.parseInt(System.console()。readLine()无法处理字符

时间:2014-09-25 18:42:46

标签: java parseint console.readline

Java初学者爱好者。

我想从结构化的练习中休息一下,从一个空白页面开始,没有帮助我自己写一些东西来测试自己。

我必须学习console()。readLine(),因为我还没有学习如何从控制台接收用户输入。这导致我解析整数等。我能够构建并编译一个完成我想象的程序,并且完美地完成了! (如果不是有点笨拙......)但是,我想在盒子外面思考,看看我如何以非预期的方式使用它并打破它。在控制台输入除数字之外的任何东西(例如输入P而不是6)它会抛出错误,因为我只告诉它如何处理数字。

长话短说,我超越了自己的知识并自学了很多,但由于我缺乏知识,找不到我想要的答案。如果有人甚至可以告诉我要阅读的内容,我非常乐意自己学习,只需要朝着正确的方向努力。

这是我的计划:

public class mysteryDoors{
  public static void main(String[] args){
    int doorOne = 1;
    int doorTwo = 2;
    int doorThree = 3;

    System.out.println("Welcome contestant, to the Mystery Doors Game!");
    System.out.println("Would you like to find out what is behind door number 1?");
    System.out.println("Maybe door number 2?");
    System.out.println("Or perhaps, door number 3?!");

    int choice = Integer.parseInt(System.console().readLine("Please Choose a door..." ));

    while (choice > 3){
      System.out.println("I am sorry, please choose one of the available doors.");
      int guess = Integer.parseInt(System.console().readLine("Please try again..." ));
      choice = guess;
    }  

    if (choice == 1){
      System.out.println("Behind door number 1 is a wonderful sofa set!");
    }
    else if (choice == 2){
      System.out.println("Behind door number 2 is a nice shiny silverware set!");
    }
    else if (choice == 3){
      System.out.println("Behind door number 3 is a NEW CAR!");
    }
  }
}

2 个答案:

答案 0 :(得分:1)

为什么不使用Scanner?请参阅:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Scanner scanner = new Scanner(System.in);
int choice = in.nextInt();

AFAIK System.console()在IDE中不起作用。

答案 1 :(得分:0)

使用try/catch块来处理异常,如下所示:

try
{
    int guess = Integer.parseInt(System.console().readLine("Please try again..." ));
    choice = guess;
}
catch(NumberFormatException e)
{
    System.out.println("Sorry, your input should be an integer. Try again.");
    e.printStackTrace();
}