Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 502|回复: 0

7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-12 17:18:45 | 显示全部楼层 |阅读模式
    7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
     

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

    main方法:

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

    输入样例:

    5
    1
    2
    a
    b
    4
    5
    3
    

    输出样例:

    java.lang.NumberFormatException: For input string: "a"
    java.lang.NumberFormatException: For input string: "b"
    [1, 2, 4, 5, 3]




    查到两种做法
    1.利用if else 直接输出
     1 import java.lang.reflect.Array;
     2 
     3 import java.util.*;
     4 
     5 public class Main {
     6 
     7     public static void main(String[] args) {
     8 
     9         Scanner sc=new Scanner(System.in);
    10 
    11         String s=sc.nextLine();
    12 
    13         int a[]=new int[Integer.valueOf(s)];
    14 
    15         for (int i=0;i<a.length;i++){
    16 
    17             String str=sc.nextLine();
    18 
    19             if (Character.isDigit(str.charAt(0))){
    20 
    21                 a=Integer.valueOf(str);
    22 
    23             }else {
    24 
    25                 System.out.println("java.lang.NumberFormatException: For input string: \""+str+"\"");
    26 
    27                 i--;
    28 
    29             }
    30 
    31         }
    32 
    33         System.out.println(Arrays.toString(a));
    34 
    35     }
    36 
    37 }

    2.try catch

     

    直接捕获异常

    import java.util.*;
    public class Main{
            public static void main(String[] args) {
                    Scanner scan = new Scanner(System.in);
                    int n=scan.nextInt();    
                    int a[]=new int[n];        
                    int count=0;        
                   while(count<n) {            
                       try {                
                           String temp=scan.next();                
                           int i=Integer.parseInt(temp);                
                             a[count++]=i;            
                          }catch(Exception e) {                
                                   System.out.println(e);    
                                       }    
                            }        
                                   System.out.println(Arrays.toString(a));        
                                   scan.close();     
                                   }}

     

    7.3 jmu-Java-06异常-03-throw与throws (10分)
     

    前言

    C语言中一般通过返回错误代码来表示一个函数执行是否有误。然而有的时候错误返回值可能与正常值相混淆。
    Java中使用异常来表示程序运行中发生的错误。本实验的主要目的为了演示使用异常机制替代错误返回值。

    题目内容

    编写类ArrayUtils
    方法:public static double findMax(double[] arr,int begin, int end)
    方法功能:用来返回arr数组中在下标begin与end-1之间(包括end-1)的最大值。
    注意:必须使用throws关键字声明findMax
    方法说明:

    1. 要求begin<end,否则抛出相应的异常(IllegalArgumentException)。
    2. begin不得小于0,end不得大于arr.length,否则也抛出异常。

    注意:抛出异常时,应让用户知道错误发生的原因。

    main方法:

    1. 输入n,创建大小为n的int数组。
    2. 输入n个整数,放入数组。
    3. 输入若干对整数,代表begin与end,然后调用ArrayUtils.findMax方法。当输入的不是整数类型字符串,则退出输入循环。
    4. 最后使用如下代码打印标识信息
      try {
           System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class));
      } catch (Exception e1) {
      } 
      

    输入样例:

    5
    1 3 5 6 8 
    0 5
    3 3
    3 4
    3 2
    -1 3
    0 6
    end
    

    输出样例:

    8.0
    java.lang.IllegalArgumentException: begin:3 >= end:3
    6.0
    java.lang.IllegalArgumentException: begin:3 >= end:2
    java.lang.IllegalArgumentException: begin:-1 < 0
    java.lang.IllegalArgumentException: end:6 > arr.length
    //这里是标识信息

     

    import java.util.Scanner;
    
    class ArrayUtils{
        public static double findMax(double[] arr,int begin, int end)throws IllegalArgumentException{
            if(begin>=end)   {
                throw new IllegalArgumentException("begin:"+begin+" >= end:"+end);
            }
            else if(begin<0){
                throw new IllegalArgumentException("begin:"+begin+" < 0");
            }
            else if(end>arr.length){
                throw new IllegalArgumentException("end:"+end+" > arr.length");
            }
    
            double max=0;
    
            for(int i=begin;i<end;i++){
                if(max<arr)
                     max=arr;
            }
            return max;
        }
    }
    
    public  class Main{
        public  static  void main(String argn[]){
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            double[] arr =new double[n];
    
            for(int i=0;i<n;i++){
                arr=scan.nextInt();
            }
    
           while(true){
               int begin,end;
               int m=0;
               ArrayUtils hsj[] =new ArrayUtils[100];
               hsj[m++]=new ArrayUtils();
               try{
                   begin = Integer.parseInt(scan.next());
                   end = Integer.parseInt(scan.next());
               } catch(NumberFormatException e){
                   break;
               }
    
               try {
                   System.out.println(hsj[m].findMax(arr,begin,end));
    
               } catch (IllegalArgumentException e) {
                   System.out.println(e.toString());
               }
           }
    
           try {
                System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class));
            } catch (Exception e1) {
    
           }
    
    
    
        }
    }

     

     
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 04:12 , Processed in 0.067616 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表