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。我错过了什么吗?
答案 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。在这种情况下,您最终会得到更简单的代码。