7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
使用异常处理输入机制,让程序变得更健壮。
main方法:
- 输入n,创建大小为n的int数组。
- 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
- 使用
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 直接输出
import java.lang.reflect.Array;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
int a[]=new int[Integer.valueOf(s)];
for (int i=0;i<a.length;i++){
String str=sc.nextLine();
if (Character.isDigit(str.charAt(0))){
a[i]=Integer.valueOf(str);
}else {
System.out.println("java.lang.NumberFormatException: For input string: \""+str+"\"");
i--;
}
}
System.out.println(Arrays.toString(a));
}
}
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。
方法说明:
- 要求begin<end,否则抛出相应的异常(
IllegalArgumentException)。 - begin不得小于0,end不得大于arr.length,否则也抛出异常。
注意:抛出异常时,应让用户知道错误发生的原因。
main方法:
- 输入n,创建大小为n的int数组。
- 输入n个整数,放入数组。
- 输入若干对整数,代表begin与end,然后调用
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分)的更多相关文章
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
- 012 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 06 浮点型“字面值”
012 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 06 浮点型"字面值" 浮点型字面值 首先要知道一点:在整型部分中,默认情况下,即整型数 ...
- Java 集合系列 02 Collection架构
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java开发笔记(七十五)异常的处理:扔出与捕捉
前面介绍的几种异常(不包含错误),编码的时候没认真看还发现不了,直到程序运行到特定的代码跑不下去了,程序员才会恍然大悟:原来这里的代码逻辑有问题.像这些在运行的时候才暴露出来的异常,又被称作“运行时异 ...
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...
- [Think In Java]基础拾遗2 - 多态、反射、异常、字符串
目录 第八章 多态第十四章 类型信息第十二章 通过异常处理错误第十三章 字符串 第八章 多态 1. 前期绑定 & 后期绑定 绑定是指将方法调用同一个方法主体关联起来的这么一个过程.如果在程序执 ...
- java io流 运行错误时,保存异常到文件里面
java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...
- 出现java.lang.NoClassDefFoundError: com/google/common/base/Charsets异常错误
使用selenium,出现java.lang.NoClassDefFoundError: com/google/common/base/Charsets异常错误 原因:selenium-server- ...
- 捕获Java线程池执行任务抛出的异常
捕获Java线程池执行任务抛出的异常Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常, public interface Runnable { publi ...
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
随机推荐
- java_guide_9-30_并发相关
3.1 CopyOnWriteArrayList 简介 public class CopyOnWriteArrayList<E> extends Object implements Lis ...
- 手把手教你用vue-clic3搭建vue-element-admin项目
下载element-admin框架 点击该地址:https://github.com/PanJiaChen/vue-element-admin 用git clone https://github.co ...
- PYTHON 100days学习笔记004:循环结构
目录 Day04 - 循环结构 1. 循环结构的应用场景 2.for-in循环 3. while循环 4. 练习 4.1 输入一个数判断是不是素数. 4.2 输入两个正整数,计算最大公约数和最小公倍数 ...
- [Comet OJ - Contest #7 D][52D 2417]机器学习题_斜率优化dp
机器学习题 题目大意: 数据范围: 题解: 学长说是决策单调性? 直接斜率优化就好了嘛 首先发现的是,$A$和$B$的值必定是某两个$x$值. 那么我们就把,$y$的正负分成两个序列,$val1_i$ ...
- [转帖]PostgreSQL的用户、角色和权限管理
PostgreSQL的用户.角色和权限管理 2018年05月18日 14:02:29 jerry-89 阅读数 6143 https://blog.csdn.net/eagle89/article/d ...
- PAT B1012.数字分类
全部AC #include <cstdio> int valid[5] = {0}; int count[5] = {0}; int p1(int i) { printf("%d ...
- nginx-host
下载nginx镜像 docker pull docker.io/nginx:latest 由于calico网络不支持http协议,所以即使你在iptables中配置了nat路由,将访问宿主机80端口的 ...
- JS基础_for循环练习3
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue-无限滚动
<ul class="infinite-list" v-infinite-scroll="load" style="overflow:auto& ...
- 7 java 笔记
1 方法是类或者对象行为特征的抽象,方法是类或对象最重要的组成部分 2 java里面方法的参数传递方式只有一种:值传递 值传递:就是将实际参数值的复制品传入方法内,而参数本身不会受到任何影响.(这是j ...