学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含
1、计算输入4个数的和
- 描述:定义一个int型数组,输入3个正数1个负数赋值给数组。利用断言性质,规定计算和的时候不允许出现负数,在关闭断言情况下,计算输入数的和。
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.Scanner; public class Example7_6 { @SuppressWarnings("resource") public static void main (String args[ ]) { int [] score ={0,0,0,0}; System.out.println("请输入3个正数,1个负数"); Scanner scanner = new Scanner(System.in); for (int i=0;i<score.length;i++){ score[i] = scanner.nextInt(); } int sum=0; for(int number:score) { assert number>0:"负数不能是成绩"; sum=sum +number; } System.out.println("总成绩:"+sum); } }
|
2、处理数组越界异常
- 描述:定义一个长度为8的课程数组,数组内容已初始化完毕。随机输入课程的序号,获取课程的名称,进行输出,如果不存在则捕捉数组越界的异常。
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import java.util.Scanner;
public class Example7_149 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入课程的序号"); int index = sc.nextInt(); String[] courses = {"数学","语文","英语","计算机","物理","化学","生物","地理"}; try { String course = courses[index]; System.out.println(course); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e); } } }
|
3、自定义异常
- 描述:自定义两个异常类,名称超长异常类和超短异常类。输入账号名称,如果大于10,抛出“账号名称超长”的自定义异常, 如果小于5,抛出“账号名称超短”的自定义异常。参考“账号名称超长异常(StringTooLongException)”,请编写一个账号名称超短的自定义异常(类名:StringTooShortException)
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| import java.util.Scanner;
public class Example7_152 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入账号名称"); String str = sc.next(); try { if (str.length() > 10) { throw new StringTooLongException(); } if (str.length() < 5){ throw new StringTooShortException(); } System.out.println("账号名称校验通过"); } catch (Exception e) { System.out.println(e); } } }
class StringTooLongException extends Exception{ public StringTooLongException(){ super("账号名称超长,必须小于10个字符"); } }
class StringTooShortException extends Exception{ public StringTooShortException(){ super("账号名称超短,必须大于5个字符"); } }
|
4、自定义异常类,计算银行收入、支出情况
- 描述:自定义一个异常类,继承Exception。定义一个银行类,包含有int型变量money,和计算收入的方法,以及获取金额的方法。银行收入为正数,支出为负数。根据收入、支出计算本次纯收入、最终存款,使用自定义异常类捕获收入、支出的异常情况并输出原因还有最终存款。
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import java.util.Scanner; class Bank { private int money; public void income(int in,int out) throws BankException { if(in<=0||out>=0||in+out<=0) { throw new BankException(in, out); } int netIncome=in+out; System.out.printf("本次计算出的纯收入是:%d元\n",netIncome); money=money+netIncome; } public int getMoney() { return money; } } class BankException extends Exception { String message; public BankException(int m,int n) { message="入账资金"+m+"是负数或支出"+n+"是正数,不符合系统要求."; } public String warnMess() { return message; } } public class Example7_5 { public static void main(String args[]) { Bank bank=new Bank(); try{ System.out.println("请输入银行收入、支出(收入正数 支出负数):"); Scanner scanner = new Scanner(System.in); bank.income(scanner.nextInt(), scanner.nextInt()); System.out.printf("银行目前有%d元\n",bank.getMoney()); System.out.println("请输入银行收入、支出(收入负数或支出正数):"); bank.income(scanner.nextInt(), scanner.nextInt()); } catch(BankException e) { System.out.println("计算收益的过程出现如下问题:"); System.out.println(e.warnMess()); } System.out.printf("银行目前有%d元\n",bank.getMoney()); } }
|
5、输入三个数字,其中第二个数字为非法数字,系统捕获异常输出,然后自定义异常输出。
- 描述:定义三个int型变量并初始化完毕,打印输出初始化的内容。然后输入三个数给他们赋值,利用try-catch捕获异常,测试异常语句下面的代码是否执行,然后自己手动抛出一个异常,打印输出结果。
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.util.Scanner; public class Example7_4 { public static void main(String args[]) { int n = 0,m = 0,t = 1000; try{ System.out.println("初始化n=0 m=0 t=1000"); System.out.println("请输入三个数给n,m,t赋值(其中输入m非法数字)");
Scanner scanner = new Scanner(System.in); n = Integer.parseInt(scanner.next()); m = Integer.parseInt(scanner.next()); t = Integer.parseInt(scanner.next()); } catch(NumberFormatException e) { System.out.println("发生异常:"+e.getMessage()); } System.out.println("n="+n+",m="+m+",t="+t); try{ System.out.println("故意抛出I/O异常!"); throw new java.io.IOException("我是故意的"); } catch(java.io.IOException e) { System.out.println("发生异常:"+e.getMessage()); } } }
|
6、根据输入装载量,计算货车装载量是否超重
- 描述:自定义异常类输出异常信息,货车类计算转载量,最大装载量为1000,根据输入数据求和判断是否大于1000,大于不好异常信息输出,不大于继续输入,输出当前装载量。
- 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| import java.util.Scanner; class DangerException extends Exception { final String message = "超载"; public String warnMess() { return message; } } class CargoBoat { int realContent; int maxContent; public void setMaxContent(int c) { maxContent = c; } public void loading(int m) throws DangerException { if(m+realContent>maxContent){ throw new DangerException(); } realContent += m; System.out.println("目前装载了"+realContent+"吨货物"); } } public class Example7_7 { public static void main(String args[]) { CargoBoat ship = new CargoBoat(); ship.setMaxContent(1000); int m =0; try{ Scanner scanner = new Scanner(System.in); System.out.println("请输入装载量(最大量1000)");
m = scanner.nextInt(); ship.loading(m); System.out.println("请输入装载量(最大量1000)");
m = scanner.nextInt(); ship.loading(m); System.out.println("请输入装载量(最大量1000)");
m = scanner.nextInt(); ship.loading(m); System.out.println("请输入装载量(最大量1000)");
m = scanner.nextInt(); ship.loading(m); } catch(DangerException e) { System.out.println(e.warnMess()); System.out.println("无法再装载重量是"+m+"吨的集装箱"); } finally { System.out.printf("货船将正点启航"); } } }
|