Java实验3 接口与异常处理

(1)飞机和小鸟都有飞的功能,小鸟用翅膀来飞,而飞机是用空气动力学原理来飞,抽象一个Fly接口,接口中有一个fly抽象方法,定义飞机和小鸟类均实现Fly接口,写个测试类来进行测试。

//定义接口
package fly;

public interface Canfly {
	public void fly();
}

 //定义类,实现接口
 class Bird implements Canfly {
	@Override
	public void fly() {
		System.out.println("小鸟靠翅膀起飞");
	}
 }

 class Plane implements Canfly {
	@Override
	public void fly() {
		System.out.println("飞机靠燃油起飞");
	}
}
 
//测试类
 class text  {	 
	public static void makeFly(Canfly c)
     {
   	    c.fly();
     }
	 public static void main(String[] args) {
		Plane p=new Plane();
		Bird b=new Bird();
		text.makeFly(p);
		text.makeFly(b);
	}

运行结果:

(2)为复数类的除法加上自定义异常处理。

package complex;
import java.util.Scanner;
	   public class complextest { // 复数类
		double real;  // 实部
		double image; // 虚部
		
		complextest(){  // 不带参数的构造方法
			Scanner input = new Scanner(System.in);
			double real = input.nextDouble();
			double image = input.nextDouble();
			complextest(real,image);
		}
	 
		private void complextest(double real, double image) { // 供不带参数的构造方法调用
			// TODO Auto-generated method stub
			this.real = real;
			this.image = image;
		}
	 
		complextest(double real,double image){ // 带参数的构造方法
			this.real = real;
			this.image = image;
		}
	 
		public double getReal() {
			return real;
		}
	 
		public void setReal(double real) {
			this.real = real;
		}
	 
		public double getImage() {
			return image;
		}
	 
		public void setImage(double image) {
			this.image = image;
		}
				
		complextest div(complextest a){ // 复数相除
			double real2 = a.getReal();
			double image2 = a.getImage();
			if((real2==0)&&(image2==0))  //检查异常:如果real2==0&&image2==0则属于异常情况
				 throw(new RuntimeException("输入的数值必须为正整数"));//报告异常
			double newReal = (real*real2 + image*image2)/(real2*real2 + image2*image2);
			double newImage = (image*real2 - real*image2)/(real2*real2 + image2*image2);
			complextest result = new complextest(newReal,newImage);
			return result;
		}
		
		public void print(){ // 输出
			if(image > 0){
				System.out.println(real + " + " + image + "i");
			}else if(image < 0){
				System.out.println(real + "" + image + "i");
			}else{
				System.out.println(real);
			}
		}
	}

  // 测试类
package complex;

public class main {
	public static void main(String[] args) {
				System.out.println("请用户输入第一个复数的实部和虚部:");
				complextest  data1 = new complextest ();
		        System.out.println("请用户输入第二个复数的实部和虚部:");
		        try{  //启用异常处理机制
		        complextest data2 = new complextest();
		        complextest result_div = data1.div(data2);
		        result_div.print();
		        }
				catch(RuntimeException e){ //捕获并处理异常
					System.out.println(e.getMessage());
				}
	}
}

运行结果:

(3)写个程序,从命令行获取两个数值,求这两个数值的和,定义异常类处理可能的各种异常。

package text;

import java.util.Scanner;

public class sum {
    public static void main(String[] args) {
    	// ArithmeticException 算数异常
        // NumberFormatException 数字格式异常
        Scanner scanner = new Scanner(System.in);
        while (true) {
    
            try {
    
                System.out.println("请输入第一个数:");
                int n1 = Integer.parseInt(scanner.nextLine());
                System.out.println("请输入第二个数:");
                int n2 = Integer.parseInt(scanner.nextLine());
                int n3 = n1 + n2;
                System.out.println(n1 + "+" + n2 + " = " + n3);
            } 
            catch (NumberFormatException e) {
                e.printStackTrace();
                continue;
            } 
            catch (ArithmeticException e) {
                e.printStackTrace();
                continue;
            }
            finally {
                System.out.println("每次都输出的!");
            }
        }
    }
}

运行结果:

经验分享 程序员 微信小程序 职场和发展