Java宝藏实验资源库(6)异常

一、实验目的

  1. 理解Java的异常处理机制。
  2. 掌握常用的异常处理方法,能够熟练使用try…catch和throw处理异常。
  3. 了解常用的内置异常类。
  4. 掌握自定义异常的编写与使用方法

二、实验内容过程及结果   

*12.3 (ArrayIndexOutOfBoundsException) Write a program that meets the following requirements:

■ Creates an array with 100 randomly chosen integers.

■ Prompts the user to enter the index of the array, then displays the corresponding element value. If the specified index is out of bounds, display the

message Out of Bounds.

*12.3 (ArrayIndexOutOfBoundsException)编写满足如下要求的程序

创建一个包含100个随机选择的整数的数组。

■提示用户输入数组的索引,然后显示对应的元素值。如果指定的索引越界,则显示

消息越界。

运行代码如下 :  

package chapter12;
import java.util.Scanner;
public class Code_03 {public static void main(String[] args) {int[] number = new int[100];for (int i = 0;i < 100;i++)number[i] = (int)(Math.random());System.out.print("Enter the index of array: ");Scanner input = new Scanner(System.in);int index = input.nextInt();try {System.out.println("The number of index" + index + " is " + number[index]);}catch (ArrayIndexOutOfBoundsException ae){System.out.println("Out of bound");}}
}

 运行结果 

*12.5 (IllegalTriangleException) Programming Exercise 11.1 defined the

Triangle class with three sides. In a triangle, the sum of any two sides is

greater than the other side. The Triangle class must adhere to this rule.

Create the IllegalTriangleException class, and modify the constructor

of the Triangle class to throw an IllegalTriangleException object if a

triangle is created with sides that violate the rule, as follows:

/** Construct a triangle with the specified sides */

public Triangle(double side1, double side2, double side3)

throws IllegalTriangleException {

// Impleme

*12.5 (IllegalTriangleException)

有三条边的三角形类。在三角形中,任意两条边的和是比另一边更大。

Triangle类必须遵守这条规则。

创建IllegalTriangleException类,并修改构造函数

抛出一个IllegalTriangleException对象

三角形的边违反规则,如下所示:

/**用指定的边构造一个三角形*/

公共三角形(双面1,双面2,双面3)

抛出IllegalTriangleException

/ / Impleme

 运行代码如下 : 

import java.util.Scanner;
public class Unite12Test5
{public static void main(String[] args)  {try {Triangle t = new Triangle(1,2,1);} catch (IllegalTriangleException e) {System.out.println(e);}}
}
class Triangle extends SimpleGeometricObject
{double side1=1.0;double side2=1.0;double side3=1.0;public Triangle() {}public double getSide1() {return side1;}public void setSide1(double side1) {this.side1 = side1;}public double getSide2() {return side2;}public void setSide2(double side2) {this.side2 = side2;}public double getSide3() {return side3;}public void setSide3(double side3) {this.side3 = side3;}public Triangle(double side1,double side2,double side3)throws IllegalTriangleException{this.side1=side1;this.side2=side2;this.side3=side3;if(side1+side2<=side3||side1+side3<=side2||side3+side2<=side1) {throw new IllegalTriangleException("该三角形错误");}}public double getArea() {double s = (this.side1+this.side2+this.side3)/2;return Math.sqrt(s*(s-this.side1)*(s-this.side2)*(s-this.side3));}public double getPerimrter() {return this.side1+this.side2+this.side3;}public String toString() {return "Triangel: side1:"+side1+" side2 = "+side2+" side3 = "+side3;}
}
class IllegalTriangleException extends Exception
{String message ;public IllegalTriangleException() {message = "该三角形错误";}public IllegalTriangleException(String argu){message = argu;}@Overridepublic String toString(){return message;}}

运行结果 

*12.6 (NumberFormatException) Listing 6.8 implements the hex2Dec(String

hexString) method, which converts a hex string into a decimal number.

Implement the hex2Dec method to throw a NumberFormatException if the

string is not a hex string.

*12.6 清单6.8实现了hex2Dec(String . exceptionhexString)方法,将十六进制字符串转换为十进制数字。

实现hex2Dec方法以抛出NumberFormatException

String不是十六进制字符串。

 运行代码如下 :

package Recursive;import java.util.Scanner;public class Exercise18_24 {public static void main(String[] args) {System.out.print("Enter a hex string: ");StringBuilder hexString = new StringBuilder(new Scanner(System.in).nextLine());System.out.println("The decimal of hex string " + hexString + " is " + hex2Dec(hexString.reverse().toString()));}/** 返回十六进制的十进制表示 */public static int hex2Dec(String hexString) {String hex = "0123456789ABCDEF";int decimal = hex.indexOf(Character.toUpperCase(hexString.charAt(hexString.length() - 1)));decimal *= (int)Math.pow(16, hexString.length()-1);return (hexString.length() == 1) ? decimal :decimal + hex2Dec(hexString.substring(0, hexString.length()-1));}
}

运行结果   

*12.8 (HexFormatException) Exercise 12.6 implements the hex2Dec method to

throw a NumberFormatException if the string is not a hex string. Define

a custom exception called HexFormatException. Implement the hex2Dec

method to throw a HexFormatException if the string is not a hex string.

*12.8 (HexFormatException)练习12.6实现了hex2Dec方法

如果字符串不是十六进制字符串,则抛出NumberFormatException。

定义一个名为HexFormatException的自定义异常。

实现hex2Dec

方法在字符串不是十六进制字符串时抛出HexFormatException。

运行代码如下 : 

package pack1;public class HexFormatException extends Exception{public HexFormatException() {}public HexFormatException(String message) {super(message);}@Overridepublic String getMessage() {return super.getMessage();}
}
package pack1;import java.util.Scanner;public class TestHexFormatException {public static void main(String[] args) throws HexFormatException {try(Scanner input = new Scanner(System.in);) {try {System.out.print("Enter a hex string: ");System.out.println("The decimal of hex string that you enter is " + hecToDec(input.next()));}catch (HexFormatException e) {System.out.println(e.getMessage());}}}/**十六进制转换为十进制*/public static int hecToDec(String hexString) throws HexFormatException {try {int integer = Integer.parseInt(hexString);if (integer < 0 || integer > 9)  //数字错误时,抛出异常throw new HexFormatException("Error hex string");return integer;} catch (java.lang.NumberFormatException e) {switch (hexString) {case "A":return 10;case "B":return 11;case "C":return 12;case "D":return 13;case "E":return 14;case "F":return 15;                //非指定字符时抛出异常default:throw new HexFormatException("Error hex string");}}}
}

运行结果 

三、实验结论  

       通过本次实验实践遇到错误、不怕错误、改正错误的知识和操作,磨砺了意志,得到了学习不可能一帆风顺,遭遇挫折也未必是坏事,感悟在学中学,问中学,改中学。

 结语  

不要追求速成

比成功更有价值的是你为之努力的过程

!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355675.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Autoware】Autoware.universe安装过程与问题记录

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Autoware.universe安装过程与问题记录。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下…

php上传zip压缩包到服务器并解压,解析压缩包内excel表格数据导入到数据库

需求: 1.需要管理后台将excel表格中的每条单词数据导入到数据库中. 2.每条单词数据对应的图片和音频文件需要上传到服务器中. 为了让客户上传数据方便,考虑了一下决定通过后台上传压缩包的方式实现 测试压缩包: 压缩包的目录结构 管理后台导入教材 public function upload…

qt开发-06_checkbox

QCheckBox 继承 QAbstractButton。复选按钮&#xff08;复选框&#xff09;与 RadioButton 的区别是选择模式&#xff0c; 单选按钮提供多选一&#xff0c;复选按钮提供多选多。 qcheckbox&#xff0c;三态选择框: 勾选以后可以 有&#xff1a; 选中、半选、未选三种状态&…

C#委托:事件驱动编程的基石

目录 了解委托 委托使用的基本步骤 声明委托(定义一个函数的原型&#xff1a;返回值 参数类型和个数&#xff09; 根据委托定义的函数原型编写需要的方法 创建委托对象&#xff0c;关联“具体方法” 通过委托调用方法&#xff0c;而不是直接使用方法 委托对象所关联的方…

VS2022遇到的两个问题

问题一&#xff1a;找不到定义的头文件 别的博主说是&#xff1a;在属性页里面进行改写&#xff0c;改成是&#xff0c;我试过之后并不行&#xff1b; 解决思路&#xff1a;但其实在右边视图里面找到你自己定义的头文件加到你运行文件中就行&#xff1b;因为程序就只有一个入口…

图像分割 K-means聚类分割算法

K-means算法是经典的基于划分的聚类方法 基本思想是以空间中的k个点为中心进行聚类&#xff0c;对最靠近它们的对象归类&#xff0c;类别数为k。不断迭代&#xff0c;逐次更新各聚类中心的值&#xff0c;直至得到最好的聚类结果。 各聚类本身尽可能的紧凑&#xff0c;而各聚类…

elementUI的el-table自定义表头

<el-table-column label"昨日仪表里程(KM)" align"left" min-width"190" :render-header"(h, obj) > renderHeader(h, obj, 参数)" > <template slot-scope"scope"> <span>{{ scope.row.firstStartMil…

【C++】类的六个默认成员函数

文章目录 类的六个默认成员函数一、构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、const成员六、取地址及const取地址操作符重载 类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;称为空类。空类中真的什么都没有吗&#xff1f;并不是&#xff0c;…

Mysql之不使用部署在k8s集群的Mysql而是选择单独部署的Mysql的原因

测试准备&#xff1a; 线程组&#xff1a;并发数100&#xff0c;持续时间2min 两个请求&#xff1a;使用k8s集群中的mysql的wordpress对应端口30011 使用单独部署的mysql的wordpress的对应端口为30022 访问同一个博客 测试结果&#xff1a; 汇总报告&#xff1a; 响应时间图&…

《C++ Primer》导学系列:第 7 章 - 类

7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中&#xff0c;类是用户定义的类型&#xff0c;提供了一种将数据和操作这些数据的函数&#xff08;成员函数&#xff09;组合在一起的方法。类定义了对象的属性和行为&#xff0c;通过实例化类来创建对象。 7.1.2 定义类 定义类…

实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统--图文解析

实战&#xff01;如何从零搭建10万级 QPS 大流量、高并发优惠券系统–图文解析 原文链接&#xff1a;https://juejin.cn/post/7087824893831544845 原文作者&#xff1a;字节跳动技术团队 需求背景 需要设计、开发一个能够支持十万级 QPS 的优惠券系统 什么是QPS? Queri…

永臻股份即将登陆上交所:业绩高增长,两大投资亮点备受看好

《港湾商业观察》王璐 冲刺上交所主板的永臻科技股份有限公司(以下简称&#xff0c;永臻股份)即将迎来挂牌上市的光荣时刻。 对于这家知名的光伏铝边框核心供应商而言&#xff0c;永臻股份的上市前景也普遍被市场所看好。 日前&#xff0c;永臻股份披露了招股意向书&#xf…

windows下的 GammaRay安装和使用教程

GammaRay功能&#xff1a; 可用于查看运行时的程序对象状态信息以及事件队列 安装步骤&#xff1a; 1.官网下载地址&#xff1a; GammaRay下载地址 下载对应的qt版本适配版本 2.解压包gammaray-2.11.2.zip 解压后新建一个build目录为接下来的编译做准备 3.打开Install.txt 看…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍&#xff0c;尤其是主流网站&#xff0c;主要原因考虑的其通用性&#xff0c;那么对于地方性的域名大家很少看到&#xff0c;比如俄罗斯国家域名.ru大家还是有些陌生的&#xff0c;但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

好用的便签是什么 电脑桌面上好用的便签

作为一名文字工作者&#xff0c;我经常需要在繁杂的思绪中捕捉灵感&#xff0c;记录下那些一闪而过的想法。在寻找一款适合电脑桌面的便签应用时&#xff0c;我偶然发现了敬业签便签软件简直是为我量身定制的&#xff0c;它不仅界面简洁&#xff0c;操作便捷&#xff0c;更重要…

eclipse中svn从分支合并到主干及冲突解决

1、将分支先commit&#xff0c;然后再update&#xff0c;然后再clean一下&#xff0c;将项目多余的target都清理掉。 2、将branches切换到trunk 3、工程上右键-》Team-》合并&#xff08;或Merge&#xff09; 4、默认选项&#xff0c;点击Next 5、有未提交的改动&#xff0c;…

利用Java easyExcel库实现高效Excel数据处理

在Java应用程序中&#xff0c;处理Excel文件是一项常见任务&#xff0c;尤其是在需要读取、写入或分析大量数据时。easyExcel是一个基于Java的高性能Excel处理库&#xff0c;它提供了简洁的API和优化的性能&#xff0c;以简化Excel文件的处理。本文将指导您如何使用easyExcel库…

fastadmin配合定时任务

一个系统单纯到linux本身的定时任务&#xff0c;是很不方便的&#xff0c;需要结合起来使用定时任务 - 便捷的后台定时任务管理 – 基于ThinkPHP和Bootstrap的极速后台开发框架 1.安装插件 2.配置宝塔定时任务 3.自己用工具生成规则即可:Cron - 在线Cron表达式生成器

error: ‘CV_YUV2BGR_UYVY‘ was not declared in this scope

遇到这个问题时&#xff0c;按照如下修改可解决问题。 //cv::cvtColor(yuvImg, rgbImg, CV_YUV2BGR_UYVY);cv::cvtColor(yuvImg, rgbImg, cv::COLOR_YUV2RGB_UYVY);

ssl证书90天过期?保姆级教程——使用acme.sh实现证书的自动续期

腾讯云相关文档相关参考-有的点不准确 前言 最近https到期了&#xff0c;想着手动更新一下https证书&#xff0c;结果发现证书现在的有效期只有90天&#xff0c;于是想找到一个自动更新证书的工具&#xff0c;发现了acme.sh&#xff0c;但是网上的文章质量参差不齐&#xff0…