异常类的使用
1.定义ExceptionTest类,其中的静态成员方法div(int a,int b)实现返回两参数相除的结果,该方法对可能产生的除数为0的不做处理只声明抛出异常;而在main()方法中调用div()方法,并用try...catch...finally语句捕获。按要求编写程序。 源代码:package text;import java.util.*;public class
1.定义ExceptionTest类,其中的静态成员方法div(int a,int b)实现返回两参数相除的结果,该方法对可能产生的除数为0的不做处理只声明抛出异常;而在main()方法中调用div()方法,并用try...catch...finally语句捕获。按要求编写程序。
源代码:
package text;
import java.util.*;
public class ExceptionTest {
public static int div(int a,int b) throws
ArithmeticException{
if(b==0){
ArithmeticException e = new ArithmeticException("除数不能为0");//创建异常对象
throw e;//抛出异常对象
}
return (a/b);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true){
System.out.print("请输入a的值:");
int a=scanner.nextInt();
System.out.print("请输入b的值:");
int b=scanner.nextInt();
try{
System.out.println("a除b:"+(a/b));
}catch(ArithmeticException e){ //捕获AritheticException异常
System.out.println("出现算数异常:"+e.getMessage());
}catch(Exception e){ //捕获异常
System.out.println("出现异常!");
}finally{
System.out.println("finally语句总会被执行");
}
}
}
}
2.自定义数字范围异常类NemberRangeException,该类成员有:描述异常信息的成员变量message、对message进行初始化的构造方法以及重写返回message值的toString()方法。
请编写程序计算两个整数之和,当任意一个数超出自定义范围时,抛出NumberRangeException异常。
源代码:
package text;
import java.util.Scanner;
public class NumberRangeException extends Exception {
public static Scanner scanner=new Scanner(System.in);
public static String message;
public NumberRangeException(String message){
super(message);//调用父类的方法
this.message = message;
}
public String getMessage(){
return message;
}
public String toString(){
return message;
}
public static void main(String[] args) throws NumberRangeException{
while(true){
try{
System.out.print("请输入a的值:");
int a=scanner.nextInt();
System.out.print("请输入b的值:");
int b=scanner.nextInt();
if((a>=50)||(a<=10)){
throw new NumberRangeException("输入的数超出自定义范围,出现异常!");
}
System.out.println("a与b的和为:"+(a+b));
}catch(NumberRangeException e){
System.out.println(e.toString());
System.out.println("请重新输入!");
}finally{
System.out.println("finally语句总会被执行!");
}
}
}
}
3.自定义表示栈满和栈空的异常类StackFullException和StackEmptyException。当向满了的栈里存储元素时产生StackFullException异常;当删除空栈中元素时会产生StackEmptyException异常。每个自定义异常类的构造方法都调用父类Exception中的带参数构造方法,并且两个类都重写toString()方法,该方法返回描述异常的信息。
请编写简单的栈类SimpleStack,该类成员包含:
(1)存放栈中元素的数组和栈顶索引;
(2)创建指定大小空栈的构造方法;
(3)提供栈的基本功能的方法:将数据压入栈中push()方法,移除栈顶数据pop()方法,判断栈满isFull()方法以及判定栈空isEmpty()方法。并在push()和pop()方法中分别添加栈满和栈空异常,以报告错误。
源代码
package DefineTestStackException;
@SuppressWarnings("serial")
public class StackFullException extends Exception {
/**
* @return
*
*/
public StackFullException(SimpleStack sp){
sp.StackFull(sp);
}
}
package DefineTestStackException;
@SuppressWarnings("serial")
public class StackEmptyException extends Exception {
/**
*
*/
public StackEmptyException(SimpleStack sp) {
sp.StackEmpty(sp);
}
}
package DefineTestStackException;
public class SimpleStack implements IMyStack {
private int [] objs = new int [4];
int size;
public void push(int data) {
objs[size++]= data;
}
public int pop() {
if(size==0){
return 0;
}
return objs[--size];
}
public int length() {
return size;
}
/**判断栈满*/
public boolean isFull(){
return size==4;
}
/**判断栈空*/
public boolean isEmpty() {
return size==0;
}
/**清除栈中的元素*/
public void clear() {
for (int i = 0; i < size; i++) {
objs[i] = 0;
}
size = 0;
}
@Override
public String toString(){
StringBuffer sb = new StringBuffer();
sb.append("MyArrayStack:[");
for (int i = 0; i < size; i++) {
sb.append(objs[i]);
if(i != size-1){
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
public void StackFull(SimpleStack sp) {
if(sp.size==sp.length()){
System.out.println("栈满了!");
}else{
System.out.println("栈空了");
}
}
public void StackEmpty(SimpleStack sp) {
if(sp.isEmpty()==true){
System.out.println("栈空了!");
}else{
System.out.println("栈没空");
}
}
@Override
public void push(Integer data) {
// TODO Auto-generated method stub
}
}
package DefineTestStackException;
/**定义一个接口类*/
public interface IMyStack {
public void push(Integer data);//实现数据的加入
public int pop();//移除栈顶元素
public int length();
public boolean isEmpty();
public boolean isFull();
public void clear();
}
package DefineTestStackException;
public class Test {
public static void main(String[] args) throws StackFullException, StackEmptyException {
SimpleStack sist = new SimpleStack();
sist.push(45);
sist.push(56);
sist.push(67);
if (sist.size == 0) {
throw new StackEmptyException(sist);
}
if (sist.size == sist.length()) {
throw new StackFullException(sist);
}
System.out.println(sist.toString());
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)