异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。在Java
等面向对象的编程语言中异常属于对象。
异常(
Exception
)都是运行时的。编译时产生的不是异常,而是错误(
Error
)。最开始大家都将程序设计导致的错误(Error
)不属于异常(
Exception
)。但是一般都将Error
作为异常的一种,所以异常一般分两类,
Error
与
Exception
。
也就是这样的:
请输入菱形的高度,推荐奇数:
a
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at LingxingPlus.main(LingxingPlus.java:17)
进程已结束,退出代码为 1
以下是部分异常:
异常类型 说明 Exception 异常层次结构的根类 RuntimeException 运行时异常,多数为java.lang异常的根类 ArithmeticException 算数异常,如以零做除数 ArrayIndexOutOfBoundException 数组大小大于或小于实际的数组大小 NullPointerException 尝试访问null对象成员,空指针异常 ClassNotFoundException 不能加载所需的类 NumberFormatException 数字格式化异常,例如字符串到float型数字的转换无效 IOException I/O异常的根类 FileNotFoundException 找不到文件 EOFException 文件结束 InterruptedExceprtion 线程中断 IllegalArgumentException 方法接收到非法参数 ClassCastException 类型转换异常 SQLException 操作数据库异常
InputMisMatchException 输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配
然后上代码:
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* @Progect:IntelliJ IDEA
* @User:megumi
* @Author: kawaismile
* @Date: 2022/06/14/15:41
* @Description:猜数游戏进阶版,除了提示数字猜大猜小外,还会提示错误的类型,并且输入“exit”可以退出游戏
*/
public class GuessNum1 {
public static void main(String[] args) {
//猜数游戏
int num = (int) (Math.random() * 100 + 1);
int guess = 0;
int count = 0;
System.out.println("请输入一个1-100的数字:");
Scanner scanner = new Scanner(System.in);
while (guess != num) {
try {
guess = scanner.nextInt();
count++;
}
//输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配
catch (InputMismatchException e) {
if (scanner.nextLine().equals("exit")) {
System.out.println("退出游戏");
break;
} else if (guess % 1 != 0) {
System.out.println("您输入的为小数,请输入一个1-100的数字:");
continue;
}
System.out.println("您输入的为字符或小数,输入错误,请重新输入一个1-100的整数");
continue;
}
if (guess < 0 || guess > 100) {
System.out.println("您输入的数字不在1-100范围内,请重新输入一个1-100的整数");
continue;
}
if (guess < num) {
System.out.println("猜小了");
} else if (guess > num) {
System.out.println("猜大了");
} else if(guess == num){
System.out.println("猜对了");
}
}
System.out.println("您一共猜了"+count+"次");
}
}
运行结果:
请输入一个1-100的数字:
11
猜小了
a
您输入的为字符或小数,输入错误,请重新输入一个1-100的整数
1.5
您输入的为字符或小数,输入错误,请重新输入一个1-100的整数
150
您输入的数字不在1-100范围内,请重新输入一个1-100的整数
-5
您输入的数字不在1-100范围内,请重新输入一个1-100的整数
50
猜小了
75
猜大了
60
猜大了
55
猜大了
56
猜大了
53
猜大了
52
猜对了
您一共猜了10次
进程已结束,退出代码为 0
请输入一个1-100的数字:
m
您输入的为字符或小数,输入错误,请重新输入一个1-100的整数
-7
您输入的数字不在1-100范围内,请重新输入一个1-100的整数
233
您输入的数字不在1-100范围内,请重新输入一个1-100的整数
50
猜大了
25
猜大了
exit
退出游戏
您一共猜了4次
进程已结束,退出代码为 0