下载eclipse,并配置jdk,jdk环境搭建建议自行百度,不过Java第一季也有讲哦
可以在try/catch结构外面套用一层while循环,try中的业务逻辑执行完break;出现异常进入catch则进行循环
System.in是System(系统)类,in是System的输入流
input.nextInt()作用是在控制台输入int类型的数据
InputMismatchException,Java中的异常,检测是否为数字
个人拙见
首先你这个赋值是有问题的;int类型的变量,你赋了一个有小数的给他,可不是会出问题嘛
其次,我不知道你为什么在catch里面打印出正常,只有当try块里面抛出异常catch才会执行;也就意味着只要catch执行了,就一定是不正常的,所以你关于这块语法的理解可能是有问题的
最后解释下为啥你这个第二句输出不执行;因为抛出异常了,直接运行了catch块,就是这么简单
建议:重新学习异常的使用并深入理解
finally语句不管你运行结果如何,都会出现在程序结尾,也就是不管怎么运行都是会执行
给我点赞,我有异常类总结表……
catch快是用来处理捕获的异常,比如继续抛出等,判断的话使用判断语句就好
额,但是好像刚刚老师没讲到这个异常类啊,他只讲了四个,那我怎么知道其他异常子类的名称呢,,,
InputMismatchException
import java.util.InputMismatchException;
import java.util.Scanner;
public class Tct2 {
public void test(){
Scanner input = new Scanner(System.in);
int a = input.nextInt();
}
public void show(){
try{
test();
}catch(InputMismatchException e){
System.out.println("类型异常,请重新输入:");
show();
}
}
public static void main(String[] args) {
Tct2 ojb = new Tct2();
ojb.show();
}
}
模除2之后余数是0和1说明,是奇数或者偶数,才能除开。这个有瑕疵 ,如果是0,...
多重 catch 语句中,异常类型必须子类在前父类在后
如果你把父类放前面就执行不到后边的了,把子类放前面,因为子类的异常信息比父类更详细。
后面的同学如果不懂记下来就好了,实例:
try {
reader = new FileReader("d:/b.txt"); // 读取文件,没有b.txt这个文件的异常
System.out.println("step1");
char c1 = (char) reader.read(); // 文件中读取不到内容异常
System.out.println(c1);
} catch (FileNotFoundException e) { // 文件未找到异常 - 子类异常 前面 这个更详细
System.out.println("step2");
e.printStackTrace();
} catch (IOException e) { //文件异常 - 父类异常 后面
e.printStackTrace();
}
自己记笔记绝对是最好的
常用的
Scanner input=new Scanner(System.in);
if(input.hasNext()) {
try{
Integer.valueOf(input.nextLine());#转为int成功的话,就是整数,转化失败就不是整数
System.out.println("你输入的是整数");
}
catch(Exception e){
System.out.println("你输入的不是整数");
}
}
用360清理下注册表试试
try{ System.out.print("请输入你的名字:"); }catch(Exceptiom e){ System.out.println("您输入的名字有误,请重新输入!!"); }finally{ System.out.println("您无论输入什么内容都是错误的!!"); }
这就是一个简单的例子!!
异常处理有专门的分类,无非就几种异常
这里Exception是父类,ArithmeticException和InputMismatchException是子类,因为Exception包括空指针异常(NullPointerException)、数组下标越界异常(ArrayOutOfBoundsException)、类型转换异常(ClassCatException)、算术异常(Arithmetic Exception)
这个事异常处理,前面你定义了接收double类型的,但是如果操作人输入的不是double或double以下的类型,就会catch到InputMismatchException,就会去接收成String类型,就不会报错了
resultutil这是什么
这个链接里面有很好的讲解,直接去看吧!
http://www.jb51.net/article/37162.htm
楼上说的i大写
只是一个形式参数,代表一个InputMismatchException型的变量输入了,他的名字是随意的
num调用了Scanner对象imput的nextInt()方法,只有在你输入不为int类型时才会抛出InputMismatchException异常
你可以在输入完成后,输入:input.close(); 命令,关闭输入流。
通常情况下,一旦方法里执行到return语句的地方,程序立即结束该方法。因为finally块总会被执行,不管try块中是否出现异常,不管哪个catch块被执行,也不管try和catch块中执行了return语句。从而保证一定能回收try块中打开的物理资源。
Exception是其他两个的父类,InputMismatchException、ArithmeticException是它的子类,InputMismatchException是输入不匹配的异常比如用字符去到数字计算,ArithmeticException是出现异常的运算条件,会出现by zero等就是零做除数,老师课上有说的你可以去前面听一下
try.....catch语句
try括号里面的内容就是一个方法。假如这个方法内需要运行的是:请你输入一个整数,但实际呢?你输入了汉字,这个方法就出现错误了。catch这个时候的作用就体现出来了,他就是提示你上面那个方法您输入有误,请输入整数。catch括号里面的内容就是一个提示作用。
现实当中的用法。假如你在一款APP的输入页面,请你输入6位全是数字的密码,而你输入了拼音,这个时候就会提示你,只能输入数字当做密码。 这个用法当中try语句括号里面执行的就是让你6位全是数字的密码,catch括号的作用就是提示作用,当你没有正确输入密码是,他就会提示你
catch()里面的内容是根据上面try执行的方法可能出现的错误而决定的。
例子1,上面try语句执行的方法是让你输入整数,这个方法中可能出现的错误就是,你输入了拼音或者小数,也就是没有正确的输入整数。这个时候就用大catch()括号里面的内容了,它只能是catch(InputMismatchException)
例子2,try语句执行的方法时进行一个除法a/b,这个方法中可能出现的错误就是,也就是a/b会有哪些错误,当然是分母不能为0了,这个就是一个错误。也就是用catch()来提示这个错误,当你分母为0的时候,这个时候就用catch(AirthmeticException).这个就是提示算术错误,catch语句是用来提示错误的
catch()语句括号里面的内容也就是和try方法互相对应的。也就是说你用到一个类型,你就得记住一个