这是我创建的游戏,我只需要以某种方式添加一个尝试捕获它,我就被卡住了。
/**
*
* @author
*/
import java.util.*;
public class magiceightball {
public static void main (String [] args){
questions();
}
public static void questions(){ //method
Scanner input = new Scanner(System.in);
while(true){
System.out.println();
System.out.println("Welcome to the Magic 8 Ball Game!");
System.out.println("Shake(Type 'Shake' to have you question answered, or type 'No more'to end the game");
String request = input.nextLine();
我想我可以在这里添加一个尝试
if (request.equalsIgnoreCase("shake")){
answer();
}
else if(request.equalsIgnoreCase("No more")){
break;
}
else{
System.out.println("Invalid answer. Please try again!");
}
}
}
public static void answer(){
switch(shake()){
case 1:System.out.println("It is certain");
break;
case 2:System.out.println("It is decidedly so");
break;
case 3:System.out.println("Most likely");
break;
case 4:System.out.println("Ask again later");
break;
case 5:System.out.println(" Better not tell you now");
break;
case 6:System.out.println("Don't count on it");
break;
case 7:System.out.println("My reply is no");
break;
case 8:System.out.println("My sources say no");
break;
case 9:System.out.println("Unlikely");
break;
case 10:System.out.println("Doubtful");
break;
}
}
public static int shake(){
这是另一个我认为可以使用try和catch来检查算术的区域
Random rand = new Random();//using random numbers
int randomInt = rand.nextInt(10 - 1 + 1) + 1;//i used this to get a random number from 1-10
System.out.println(randomInt);
return randomInt;
}
}
答案 0 :(得分:1)
由于异常主要用于处理错误或其他异常/意外事件,因此适合此类异常的是answer()
方法。想象一下你可能没想到的可能出现的问题。
例如,当shake()
方法返回switch
语句无法处理的值时会发生什么?考虑一种情况,你增加了随机数生成器的范围,忘了添加其他情况;或者,您没有从配置文件中动态加载足够的答案。
一个简单的解决方案可能是添加default:
案例,该案例会返回一些“全能”答案(例如“我不知道”)。但是,更好的解决方案是让default:
情况下抛出Exception
来表示您的方法没有针对某些卷的答案。
int roll = shake();
switch ( roll ) {
...
default:
throw new Exception( "No answer for roll: " + roll );
}