7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
标签:说明 parse strong rac double temp except next print
使用异常处理输入机制,让程序变得更健壮。
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(); }}
C语言中一般通过返回错误代码来表示一个函数执行是否有误。然而有的时候错误返回值可能与正常值相混淆。
Java中使用异常来表示程序运行中发生的错误。本实验的主要目的为了演示使用异常机制替代错误返回值。
编写类ArrayUtils
方法:public static double findMax(double[] arr,int begin, int end)
方法功能:用来返回arr数组中在下标begin与end-1之间(包括end-1)的最大值。
注意:必须使用throws关键字声明findMax。
方法说明:
IllegalArgumentException
)。注意:抛出异常时,应让用户知道错误发生的原因。
ArrayUtils.findMax
方法。当输入的不是整数类型字符串,则退出输入循环。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) { } } }
7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
标签:说明 parse strong rac double temp except next print
原文地址:https://www.cnblogs.com/zlshy/p/12088095.html