• Java面向对象程序设计综合练习4(编程题)


    使用异常处理输入机制,让程序变得更健壮。

    main方法:

    1. 输入n,创建大小为n的int数组。
    2. 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
    3. 使用Arrays.toString输出数组中的内容。

    输入样例:

    1. 5
    2. 1
    3. 2
    4. a
    5. b
    6. 4
    7. 5
    8. 3

    输出样例: 

    1. java.lang.NumberFormatException: For input string: "a"
    2. java.lang.NumberFormatException: For input string: "b"
    3. [1, 2, 4, 5, 3]
    1. import java.util.*;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner cin = new Scanner(System.in);
    5. int n = cin.nextInt();
    6. int cnt = 0;
    7. int[] a = new int[n];
    8. while (cnt < n) {
    9. try {
    10. String x = cin.next();
    11. int t = Integer.parseInt(x);
    12. a[cnt++] = t;
    13. }catch(Exception e) {
    14. System.out.println(e);
    15. }
    16. }
    17. System.out.println(Arrays.toString(a));
    18. }
    19. }

    R7-2 天不假年

    程序填空题。根据题目要求完善下面的代码。请提交完整代码。
    “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。
    Person类的setAge方法用于更新年龄。
    如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args){
    4. Scanner in = new Scanner(System.in);
    5. int age;
    6. age = in.nextInt();
    7. Person p = new Person(age);
    8. age = in.nextInt();
    9. try{
    10. p.setAge(age);
    11. }catch(AgeException e){
    12. }
    13. }
    14. }
    15. class Person{
    16. int age;
    17. public Person(int age){
    18. this.age = age;
    19. }
    20. public void setAge(int age) throws AgeException {
    21. if(this.age <=age){
    22. this.age = age;
    23. }else{
    24. throw new AgeException();
    25. }
    26. }
    27. }
    28. class AgeException extends Exception{
    29. }

    输入格式:

    输入在一行中给出2个绝对值不超过100的正整数A和B。

    输出格式:

    在一行中输出一个字符A或者B。

    输入样例:

    50 18
    

    输出样例:

    B

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args){
    4. Scanner in = new Scanner(System.in);
    5. int age;
    6. age = in.nextInt();
    7. Person p = new Person(age);
    8. age = in.nextInt();
    9. try{
    10. p.setAge(age);
    11. System.out.println("A");
    12. }catch(AgeException e){
    13. System.out.println("B");
    14. }
    15. }
    16. }
    17. class Person{
    18. int age;
    19. public Person(int age){
    20. this.age = age;
    21. }
    22. public void setAge(int age) throws AgeException {
    23. if(this.age <=age){
    24. this.age = age;
    25. }else{
    26. throw new AgeException();
    27. }
    28. }
    29. }
    30. class AgeException extends Exception{
    31. }

    R7-3 成绩录入时的及格与不及格人数统计

    编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。

    输入格式:

    从键盘中输入学生人数n

    从键盘中输入第1个学生的成绩

    从键盘中输入第2个学生的成绩

    ...

    从键盘中输入第n个学生的成绩

    (注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)

    输出格式:

    显示及格总人数

    显示不及格总人数

    输入样例:

    在这里给出一组输入。例如:

    1. 3
    2. 100
    3. 30
    4. 60

    输出样例:

    在这里给出相应的输出。例如:

    1. 2
    2. 1

    输入样例:

    在这里给出一组输入。例如:

    1. 2
    2. 200
    3. 69
    4. 30

    输出样例:

    在这里给出相应的输出。例如:

    1. 200invalid!
    2. 1
    3. 1
    1. import java.util.*;
    2. public class Main{
    3. public static void main(String[] args) {
    4. Scanner in=new Scanner(System.in);
    5. int n=in.nextInt();
    6. int sum1=0,sum2=0;
    7. int []s=new int[n];
    8. for(int i=0;i<n;i++) {
    9. int m=in.nextInt();
    10. if(m>100||m<0) {
    11. System.out.println(m+"invalid!");
    12. i--;
    13. continue;
    14. }
    15. else
    16. s[i]=m;
    17. if(m<60) sum1+=1;
    18. else sum2+=1;
    19. }
    20. System.out.println(sum2);
    21. System.out.println(sum1);
    22. }
    23. }

    R7-4 测试抛出异常

    尝试构造类ArrayUtil,该类的方法int findMax(int[] arr, int begin, int end)能抛出IllegalArgumentException(表示参数错误)的方法。
    正常执行要求begin<=end

    如果begin>=end,抛出异常(IllegalArgumentException),异常信息为 “begin:x >= end:x”

    如果begin<0,抛出异常(IllegalArgumentException),异常信息为 “begin:x < 0”

    如果end>arr.length,抛出异常(IllegalArgumentException),异常信息为 “end:x > arr.length”

    要求在findMax方法声明处声明此异常,在main函数里要捕获此异常,并输出异常类型(可用obj.getClass().getName())和异常信息

    输入格式:

    输入n,表示int数组大小

    输入n个整数,放入数组。

    输入m,表示begin和end的对数

    输入m对整数,代表begin与end,然后调用ArrayUtils.findMax方法。

    输出格式:

    异常信息

    数组的最大值

    输入样例:

    在这里给出一组输入。例如:

    1. 5
    2. 1 2 3 4 5
    3. 6
    4. 0 5
    5. 3 3
    6. 3 4
    7. 3 2
    8. -1 3
    9. 0 6

    输出样例:

    在这里给出相应的输出。例如:

    1. 5
    2. java.lang.IllegalArgumentException: begin:3 >= end:3
    3. 4
    4. java.lang.IllegalArgumentException: begin:3 >= end:2
    5. java.lang.IllegalArgumentException: begin:-1 < 0
    6. java.lang.IllegalArgumentException: end:6 > arr.length

    1. import java.util.*;
    2. public class Main {
    3. public static void main(String[] args) {
    4. // TODO Auto-generated method stub
    5. Scanner in=new Scanner(System.in);
    6. int n=in.nextInt();
    7. int[] a=new int[n];
    8. for(int i=0;i<n;i++){
    9. a[i]=in.nextInt();
    10. }
    11. int m=in.nextInt();
    12. ArrayUtil aaa=new ArrayUtil();
    13. for(int i=0;i<m;i++){
    14. int low=in.nextInt();
    15. int high=in.nextInt();
    16. aaa.findMax(a,low,high);
    17. }
    18. }
    19. }
    20. class ArrayUtil{
    21. public ArrayUtil() {//构造函数
    22. }
    23. public void findMax(int[] arr, int begin, int end) {
    24. if(begin>=end) {
    25. System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" >= end:"+end);
    26. }else if(begin<0) {
    27. System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" < 0");
    28. }else if(end>arr.length) {
    29. System.out.println("java.lang.IllegalArgumentException: end:"+end+" > arr.length");
    30. }else{
    31. int max=-9999;
    32. for(int i=begin;i<end;i++) {
    33. if(arr[i]>max) {
    34. max=arr[i];
    35. }
    36. }
    37. System.out.println(max);
    38. }
    39. }
    40. }

  • 相关阅读:
    美术馆预约小程序|基于微信小程序的美术馆预约平台设计与实现(源码+数据库+文档)
    有哨兵位双向循环链表
    Vue Router路由详解
    23届秋招内推‖恒生电子
    环境多介质逸度模型与典型案例【代码】应用
    最全“Java面试宝典+Java核心知识集”,一箭双雕杠秋招
    depth estimation datasets
    PG数据库基本使用
    LintCode 1359: Convert Sorted Array to Binary Search Tree
    Fastjson 反序列化漏洞[1.2.24-rce]
  • 原文地址:https://blog.csdn.net/qq_51916951/article/details/125385251