尝试/捕捉我似乎不知道在哪里放它

时间:2017-05-07 14:02:28

标签: java

 Story.direct3();
            br.readLine();
            Story.des();
            try{
            short choice1 = Short.parseShort(br.readLine());

            switch(choice1){
                case 1:
                    Display.yes();
                    br.readLine();
                    Story.rid();
                    String answ = br.readLine();

                    if ("Gravity".equals(answ) || "gravity".equals(answ)){
                        Display.correct();
                        Short choice2 = Short.parseShort(br.readLine());

                        switch(choice2){
                            case 1:

                                break;
                        }
                    }
                    else{
                        int less = player.hp - 10;
                        System.out.println("Wrong answer! Your hp will be lessen by 10. The correct answer is : 'Gravity'");
                        System.out.println("Your remaining HP is: " + less + "[press enter to continue...]");
                        br.readLine();
                        Story.wrong();
                        br.readLine();

                    }
                    break;
                case 2:
                    Story.wrong1();
                    br.readLine();
                    break;
            }
            break;
    }
            catch(NumberFormatException ex){
                System.out.println("Would you like to change your battle item?"
            + "\n[1] Yes"
             + "\n[2] No");
            }

我刚刚开始编写java过去2个月的时间,并询问了我的朋友代码,并尝试了它。事情是我不知道如何把try / catch。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

当涉及到异常处理时,你应该只放置可能导致try-catch块内部异常的代码行/代码块。例如,在您的情况下,您可以尝试使用try-catch来确保他提供了整数:

try{
        short choice1 = Short.parseShort(br.readLine());
}catch(NumberFormatException ex){
    System.out.println("Would you like to change your battle item?"
        + "\n[1] Yes"
         + "\n[2] No");
}

但是这只会检查他的输入是否是数字,如果他写下你的开关没有处理的3或4怎么办?您应该包括切换的默认情况或检查数字是否大于2或小于1并重复问题。

此外,这种类型的输入可以更容易处理,而不依赖于错误处理:

String s = br.readLine();
while(!s.equals("2") || s.equals("1")){
    System.out.println("Invalid input, try again:");// change message to fit your game
    s = br.readLine();
}
if(s.equals("1")){
    //Do something
}else{
    //Do something
} 

请记住,如果可以在不使代码过于复杂的情况下执行此操作,则应尽量避免使用try-catch。在这种情况下,您最终会得到更简单的代码。