使用异常处理输入机制,让程序变得更健壮。
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]
- import java.util.*;
-
- public class Main {
-
- public static void main(String[] args) {
- Scanner cin = new Scanner(System.in);
- int n = cin.nextInt();
- int cnt = 0;
- int[] a = new int[n];
- while (cnt < n) {
- try {
- String x = cin.next();
- int t = Integer.parseInt(x);
- a[cnt++] = t;
- }catch(Exception e) {
- System.out.println(e);
- }
- }
- System.out.println(Arrays.toString(a));
- }
-
- }
程序填空题。根据题目要求完善下面的代码。请提交完整代码。
“今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。
Person类的setAge方法用于更新年龄。
如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。
- import java.util.Scanner;
- public class Main{
- public static void main(String[] args){
- Scanner in = new Scanner(System.in);
- int age;
- age = in.nextInt();
- Person p = new Person(age);
- age = in.nextInt();
- try{
- p.setAge(age);
- }catch(AgeException e){
- }
- }
- }
- class Person{
- int age;
- public Person(int age){
- this.age = age;
- }
- public void setAge(int age) throws AgeException {
- if(this.age <=age){
- this.age = age;
- }else{
- throw new AgeException();
- }
- }
- }
- class AgeException extends Exception{
- }
输入在一行中给出2个绝对值不超过100的正整数A和B。
在一行中输出一个字符A或者B。
50 18
B
- import java.util.Scanner;
- public class Main{
- public static void main(String[] args){
- Scanner in = new Scanner(System.in);
- int age;
- age = in.nextInt();
- Person p = new Person(age);
- age = in.nextInt();
- try{
- p.setAge(age);
- System.out.println("A");
- }catch(AgeException e){
- System.out.println("B");
- }
- }
- }
- class Person{
- int age;
- public Person(int age){
- this.age = age;
- }
- public void setAge(int age) throws AgeException {
- if(this.age <=age){
- this.age = age;
- }else{
- throw new AgeException();
- }
- }
- }
- class AgeException extends Exception{
- }
编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩
...
从键盘中输入第n个学生的成绩
(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
显示及格总人数
显示不及格总人数
在这里给出一组输入。例如:
- 3
- 100
- 30
- 60
在这里给出相应的输出。例如:
- 2
- 1
在这里给出一组输入。例如:
- 2
- 200
- 69
- 30
在这里给出相应的输出。例如:
- 200invalid!
- 1
- 1
- import java.util.*;
-
- public class Main{
-
- public static void main(String[] args) {
- Scanner in=new Scanner(System.in);
- int n=in.nextInt();
- int sum1=0,sum2=0;
- int []s=new int[n];
- for(int i=0;i<n;i++) {
- int m=in.nextInt();
- if(m>100||m<0) {
- System.out.println(m+"invalid!");
- i--;
- continue;
- }
- else
- s[i]=m;
- if(m<60) sum1+=1;
- else sum2+=1;
- }
- System.out.println(sum2);
- System.out.println(sum1);
- }
-
- }
尝试构造类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方法。
异常信息
数组的最大值
在这里给出一组输入。例如:
- 5
- 1 2 3 4 5
- 6
- 0 5
- 3 3
- 3 4
- 3 2
- -1 3
- 0 6
在这里给出相应的输出。例如:
- 5
- java.lang.IllegalArgumentException: begin:3 >= end:3
- 4
- java.lang.IllegalArgumentException: begin:3 >= end:2
- java.lang.IllegalArgumentException: begin:-1 < 0
- java.lang.IllegalArgumentException: end:6 > arr.length
- import java.util.*;
- public class Main {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner in=new Scanner(System.in);
- int n=in.nextInt();
- int[] a=new int[n];
- for(int i=0;i<n;i++){
- a[i]=in.nextInt();
- }
-
- int m=in.nextInt();
- ArrayUtil aaa=new ArrayUtil();
- for(int i=0;i<m;i++){
- int low=in.nextInt();
- int high=in.nextInt();
- aaa.findMax(a,low,high);
- }
- }
- }
-
- class ArrayUtil{
- public ArrayUtil() {//构造函数
-
- }
- public void findMax(int[] arr, int begin, int end) {
- if(begin>=end) {
- System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" >= end:"+end);
- }else if(begin<0) {
- System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" < 0");
- }else if(end>arr.length) {
- System.out.println("java.lang.IllegalArgumentException: end:"+end+" > arr.length");
- }else{
- int max=-9999;
- for(int i=begin;i<end;i++) {
- if(arr[i]>max) {
- max=arr[i];
- }
- }
- System.out.println(max);
- }
- }
- }
-