zoukankan      html  css  js  c++  java
  • 7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)

    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[i]=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[i])
                     max=arr[i];
            }
            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[i]=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) {
    
           }
    
    
    
        }
    }
     
  • 相关阅读:
    君の知らない物語
    2.OSI各层概述
    [ unittest ] 使用初体验
    1.分层结构、协议、接口、服务
    [flask] jinja自定义filter来过滤html标签
    [Flask] Flask问题集(后端模板渲染项目)
    [服务器部署] Flask + virtualenv + uWSGI + Nginx 遇到的问题
    android控件的对齐方式(转)
    AIDL
    歌词的获取
  • 原文地址:https://www.cnblogs.com/zlshy/p/12088095.html
Copyright © 2011-2022 走看看