A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荣天 中级黑马   /  2012-5-18 17:14  /  1450 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class AException{
  2.   public static void main(String[] args) {
  3.    Scanner scanner=new Scanner(System.in);
  4.    boolean continueInput=true;
  5.     do {
  6.       try {
  7.         int num1 = scanner.nextInt();
  8.         String  i=scanner.next();
  9.         int num2=scanner.nextInt();
  10.    
  11.     int result = 0;
  12.    
  13.     switch (i.charAt(0)) {
  14.       case '+': result = num1 +num2;
  15.                 break;
  16.       case '-': result = num1-num2;
  17.                 break;
  18.       case '*': result = num1*num2;
  19.                 break;
  20.       case '/': result = num1/num2;
  21.     }

  22.     System.out.println(num1 + i + num2
  23.       + " = " + result);
  24.      continueInput=false;
  25.      }
  26.      catch (InputMismatchException ex) {
  27.         System.out.println("Wrong Input: ");
  28.         break;
  29.       }
  30.     } while (continueInput);
  31.   }
  32. }
复制代码
只能输入整型数,假如输入3.4
怎样输出“Wrong Input:3.4”
就是要捕获输入错误的异常,想问怎样在“wrong input”后加上输入错误的数    赐教  谢谢

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
楼主的代码编译是不通过的
回复 使用道具 举报
换种做法,看代码:
public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                String str = "";
                boolean continueInput = true;
                do {
                        try {
                                str = scanner.next();
                                int num = Integer.parseInt(str);

                                System.out.println("num:" + num);
                                int num1 = scanner.nextInt();
                                String i = scanner.next();
                                int num2 = scanner.nextInt();

                                int result = 0;

                                switch (i.charAt(0)) {
                                case '+':
                                        result = num1 + num2;
                                        break;
                                case '-':
                                        result = num1 - num2;
                                        break;
                                case '*':
                                        result = num1 * num2;
                                        break;
                                case '/':
                                        result = num1 / num2;
                                }

                                System.out.println(num1 + i + num2 + " = " + result);
                                continueInput = false;
                        } catch (Exception ex) {
                                System.out.println("Wrong Input: " +str);
                                break;
                        }
                } while (continueInput);
        }


红色字体的为添加的代码,其它一样,没动。
一开始获取的时候就报错了,在catch中怎么可能得到控制台输入的信息呢,必须保证先获取到,再进行判断。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 谢述华 于 2012-5-18 18:09 编辑

水平不济,只能暂时先给出错误提示,throw new RuntimeException("错误的输出:"+y);
还缺乏,读取System.in和判断是否为小数的过程。float类型不能正常读取。。。
  1. float y = (float)x.read();
  2. System.out.println(y);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马