为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我输入3的时候,不会catch


import java.awt.TexturePaint;

import java.util.InputMismatchException;

import java.util.Scanner;

public class error extends Exception {

String maths="高数";

String linux="操作系统";

    

     public void test(){

    for(;;) {

    try{ 

System.out.println("1.按名称查找。2.按序号查找");

Scanner imput=new Scanner(System.in);

        int num=imput.nextInt();


if(num==1){

System.out.println("请输入名称:");

Scanner book=new Scanner(System.in);

String boo=book.next();

if(boo.equals("高数")){

System.out.println("书籍为高数");

}

}

if(num==2){

}

    }catch (InputMismatchException e) {

System.out.println("请输入1或者2");

continue;

    }

    break;

    }

     }

public static void main(String[] args) {

error i=new error();

i.test();


}


}


正在回答

1 回答

num调用了Scanner对象imput的nextInt()方法,只有在你输入不为int类型时才会抛出InputMismatchException异常

0 回复 有任何疑惑可以回复我~
#1

java大战EDM

需要自己用分支语句在num接收到的值不是1或2时手动throw一个异常,然后再catch
2017-03-19 回复 有任何疑惑可以回复我~
#2

chanch 提问者

非常感谢!
2017-03-19 回复 有任何疑惑可以回复我~
#3

chanch 提问者 回复 java大战EDM

能用代码表示一下吗,throw这段看不怎么懂
2017-03-19 回复 有任何疑惑可以回复我~
#4

java大战EDM 回复 chanch 提问者

其实我自己也写不太好...总的来说throw就是向调用者抛出错误,try_catch是处理错误,你所有过程都放在test里了throw就可能不太好处理...你可以去看下老师和其他同学写的代码。
2017-03-19 回复 有任何疑惑可以回复我~
#5

java大战EDM 回复 chanch 提问者

其实我本来写到一半...看了老师的代码,参观了下,感觉写不出比老师的代码写的更好就懒得写了XD...
2017-03-19 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

为什么我输入3的时候,不会catch

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信