本帖最后由 aspoMAN 于 2013-9-26 18:12 编辑
对于输入字符或数字出现的异常该如何处理?
如果用户输入的不是数字,或不按照提示进行输入,我怎么还能让他继续运行呢(猜大小的过程),哪位大神有好的算法或优化方法,请多赐教- import java.io.*;
- /*
- * 需求:
- * 随机生成一个1-100的int数
- * 接收用户输入,判断是否猜对数字。如果猜大了则提示大了,如果猜小了则提示小了。猜中了则提示猜中了。
- * 如果用户在3次以内猜对,则提示真聪明。如果在10次或10次以内猜对,则提示还可以啦。如果大于10次,则提示对不起,智商不过关
- * 如果用户猜中或到达10次都没有中则提示是否重新挑战,输入y/n进行选择。
- *
- * 不足:猜大小的过程中,对于非int类型的数据无法 处理。
- */
- public class GuessNum {
- public static void main(String[] args) {
- while(true){
- int numValue = 10;//new Random().nextInt(100)+1;
- int i = 0;
- System.out.println("系统已生成一个1-100的随机数,请输入数字猜大小");
- String relValue = "";
- while(i<10&&!relValue.equals("猜中了")){
- //用户输入
- BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
- int userNum = 0;
- try {
- userNum = Integer.parseInt(bfr.readLine());
- } catch (NumberFormatException e) {
- // TODO Auto-generated catch block
- System.out.println("格式不正确,程序已停止运行");
- return;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- System.out.println("格式不正确,程序已停止运行");
- return;
- }
- //猜大、猜小
- relValue = guessRight(numValue,userNum);
- showResult(relValue);
- i++;
- }
- //答题级别
- showResult(getType(i));
- isExit();
- }
- }
-
- //打印方法
- private static void showResult(String strValue) {
- System.out.println(strValue);
-
- }
- //判断数字是否猜中
- public static String guessRight(int numValue, int userNum){
- if(numValue == userNum){
- return "猜中了";
- } else if (numValue > userNum){
- return "猜小了";
- } else {
- return "猜大了";
- }
- }
-
- //判断答题级别
- public static String getType(int i){
- if(i<=3){
- return "可以啊,没难倒你 nice 得分:100";
- } else if(i<10){
- return"一般般啦,good 得分:75";
- } else {
- return"还不知道你, 唉 智商是硬伤 得分:10";
- }
- }
-
- //是否退出系统
- public static void isExit(){
- System.out.print("是否退出? y/n");
- while(true){
- BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
- try {
- String y = bfr.readLine();
- if(y.equals("y")){
- System.out.println("退出系统");
- System.exit(0);
- } else if(y.equals("n")){
- System.out.println("再来一次");
- } else {
- System.out.println("请输入正确的字符");
- }
- } catch (NumberFormatException e) {
- // TODO Auto-generated catch block
- System.out.println("格式不正确,程序已停止运行");
- return;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- System.out.println("格式不正确,程序已停止运行");
- return;
- }
- }
- }
- }
复制代码 |