Java

328 阅读22分钟

第二章 java语言基础

1. 某航空公司航班班期查询程序

package 第二次作业补充;

import java.util.Scanner;

public class chapter1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scanner=new Scanner(System.in);
		System.out.printf("请输入航班日期:");
		byte sche=scanner.nextByte();	
		String[] dataTime= {"周日","周一","周二","周三","周四","周五","周六"};
		System.out.println("航班日期"+sche+",以下日期有航班: ");
		for(int i=0;i<7;i++)
		{
			if((sche &(1<<i))!=0)
			{
				System.out.print(dataTime[i]+" ");
			}
			System.out.println("");
		}
	}

}

2. 设计一个程序,从键盘输入一个矩形的长和宽,求矩形的周长和面积

package 第二次作业;

import java.util.Scanner;

public class chapter1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scanner=new Scanner(System.in);
		 System.out.printf("请输入矩形的长:");
		 float x=scanner.nextFloat();
		 System.out.printf("请输入矩形的宽:");
		 float y=scanner.nextFloat();
		 float s=x*y;
		 float l=(x+y)*2;
		 System.out.println("矩形的面积为:"+s);
		 System.out.println("矩形的周长为:"+l);
		 
	}

}

 

第三章java程序的控制结构

1. 判断一个数是否为素数。从控制台输入一个数,判断是否为素数


import java.util.Scanner;

public class chapter1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入一个数字:");
		int num=scanner.nextInt();	
		int i=0;
		for(i=2;i<num;i++)
		{
            if(num%i==0){
                break;
            }
        }
		if(num==i)
		{
            System.out.println(num+"是素数");
        }
		else
		{
            System.out.println(num+"不是素数");
        }
	}
}

2. 猜数字游戏

package 第三次上机作业;

import java.util.Scanner;
public class chapter3 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int number = (int) (Math.random() * 100); // 产生随机数
        Scanner scanner = new Scanner(System.in);
        int count = 0; 
        while (count < 5) {
            System.out.print("请输入一个0~99之间的数字:");
            int guessNum = scanner.nextInt();
            if (guessNum < number) {
                System.out.println("太小了,再大一点!");
            } else if (guessNum > number) {
                System.out.println("太大了,再小一点!");
            } else {
                System.out.println("恭喜你猜对了!");
                return;
            }
            count++;
        }
        System.out.println("你太笨了,下次再来吧!");
		
	}

}


3. 编写程序,在控制台输出10×10的*

package 第三次上机作业;

public class chapter4_01 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//打印5*5的*
		for (int i = 0; i <10; i++) 
		{
			for(int j=0;j< 10;j++)
			{
				
				System.out.print("*");
			}
			System.out.println();
		}	
		
	}

}

输出用*组成的正直角三角形

package 第三次上机作业;

public class chapter4_02 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//打印用*组成的正直角三角形
		for (int i=0;i<3;i++) 
		{
			for(int j =0; j<=i; j++)
			{
				
				System.out.print("*");
			}
			System.out.println();
		}	
	}

}

输出用*组成的倒直角三角形

package 第三次上机作业;

public class chapter4_03 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//打印用*组成的倒直角三角形
		for (int i = 3; i>0; i--) 
		{
			for(int j=0;j< i;j++)
			{
				
				System.out.print("*");
			}
			System.out.println();
		}	
	}

}

4. 设计一个类CalcuSum,计算并输出1-30中所有奇数的和,提示:用for或者while循环实现均可 whle:

package 期末复习BC;

public class CalcuSum {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

		int sum=0;
		int i=1;
		while(i<=30) {
			if(i%2==1) {
				sum+=i;
			}
			i++;
		}
		System.out.println(sum);

}
}

for:

package 期末复习BC;

public class CalcuSum {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int sum=0;
		for(int i=1;i<=30;i++) {
			if(i%2==1) {
				sum+=i;
			}
		}
		System.out.println(sum);

}
}

第四章 数组

1. 输出唐诗


public class chapter1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
    String [][]arr= {
    		{"静夜思"}, 
    		{"[唐] 李白"},
            {"床前明月光"},  
            {"疑是地上霜"},  
            {"举头望明月"},  
            {"低头思故乡"}
    };
    int rows = arr.length;  
    int cols = arr[0].length;  

    // 从右至左,竖行排列输出唐诗  
    for (int i = cols - 1; i >= 0; i--) {  
        for (int j = 0; j < rows; j++) {  
            System.out.print(arr[j][i]);  
            if (j < rows - 1) {  
                System.out.println();  
            }  
        }  
        System.out.println();  
    }  
}  
}

2. 获取数组中的最大值。

package 第四次上机作业;

import java.util.Arrays;

import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;

public class chapter2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int[] arr={3,7,9,5,0,6,1};
		Arrays.sort(arr);
		System.out.println("数组arr的最大值为:"+arr[arr.length-1]);
		
	}

}

第五章 类与对象

1. 编写一个Shape类,具有属性:周长和面积;定义其子类三角形和矩形,分别具有求周长的方法。定义主类E,在其main方法中创建三角形和矩形类的对象,并赋给Shape类的对象a、b,使用对象a、b来测试其特性。

class Shape {
    protected double perimeter;
    protected double area;
}

class Triangle extends Shape {
    private double side1;
    private double side2;
    private double side3;

    public Triangle(double side1, double side2, double side3) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    public double getPerimeter() {
        perimeter = side1 + side2 + side3;
        return perimeter;
    }
}

class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    public double getPerimeter() {
        perimeter = 2 * (length + width);
        return perimeter;
    }
}

public class E {
    public static void main(String[] args) {
        Triangle triangle = new Triangle(3, 4, 5);
        Rectangle rectangle = new Rectangle(4, 5);

        Shape a = triangle;
        Shape b = rectangle;

        System.out.println("Triangle perimeter: " + a.getPerimeter());
        System.out.println("Rectangle perimeter: " + b.getPerimeter());
    }
}

2. 设计一个关于梯形的类TiXing,其中的属性包括梯形的上底di1, 梯形的下底di2梯形的高gao,方法包括:为di1、di2和gao指定初始值的构造方法,获取梯形的面积findArea。

  image.png

package 期末总复习;

public class TiXing {
	private int di1;
	private int di2;
	private int gao;
	
	public TiXing(int ti1, int ti2, int gao) {
		super();
		this.di1 = ti1;
		this.di2 = ti2;
		this.gao = gao;
		
	}
	public double findArea() {
		 return (di1 + di2) * gao / 2;
	}
	
	
}

package 期末总复习;

public class testTiXing {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		TiXing tiXing=new TiXing(4, 8, 5);
		double areaTiXing=tiXing.findArea();
		 System.out.println("梯形的面积为:" + areaTiXing);
	}

}

 

5. 定义一个复数类Complex, 复数的实部Real与虚部Image定义为私有数据成员,定义gttets和stters方法访问已有数据成员,再定义构造方法对实部与虛部进行初始化,定义公有成员函数Show()显示复数值。

package 第五次上机作业;

public class Complex {
    private double Real;
    private double Image;

    // 构造方法
    public Complex(double real, double image) {
        this.Real = real;
        this.Image = image;
    }

    // getter方法
    public double getReal() {
        return Real;
    }

    public double getImage() {
        return Image;
    }

    // setter方法
    public void setReal(double real) {
        Real = real;
    }

    public void setImage(double image) {
        Image = image;
    }

    // 显示复数值的公有成员函数
    public void Show() {
        System.out.println("复数为: " + Real + " + " + Image + "i");
    }
    public static void main(String[] args) {
        Complex complex = new Complex(3, 4);
        complex.Show(); 
    }
}

第六章 继承和多态

  1. 按要求编写一个Java应用程序:

(1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。

package 期末复习BC;

//矩形类
class Rectangle {
 private double length;
 private double width;

 public Rectangle(double length, double width) {
     this.length = length;
     this.width = width;
 }

 public double calculateArea() {
     return length * width;
 }
}

(2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,和计算体积的方法。

package 期末复习BC;

//长方体类,继承自矩形类
class Cuboid extends Rectangle {
 private double height;

 public Cuboid(double length, double width, double height) {
     super(length, width);
     this.height = height;
 }

 public double calculateVolume() {
     return calculateArea() * height;
 }
}

(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。

package 期末复习BC;

public class Test {
    public static void main(String[] args) {
        // 创建一个长方体对象
        Cuboid cuboid = new Cuboid(5, 4, 3);
        
        // 输出底面积和体积
        System.out.println("底面积:" + cuboid.calculateArea());
        System.out.println("体积:" + cuboid.calculateVolume());
    }
}

3.编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类E。要求:

(1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak()方法,在speak方法中输出“咿咿呀呀......”的信息。

package 期末复习BC;

public class Monkey {
	private String s;

	public Monkey(String s) {
		super();
		this.s = s;
	}
	public void speak() {
		System.out.println("咿呀咿呀");
	}
	
}

(2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法中输出“小样的,不错嘛!会说话了!”的信息。

(3)在People类中新增方法void think(),在think方法中输出“别说话!认真思考!”的信息。

package 期末复习BC;

import org.omg.CORBA.PUBLIC_MEMBER;

public class People extends Monkey {

	public People(String s) {
		super(s);
		// TODO 自动生成的构造函数存根
		
	}
	  @Override
	    public void speak() {
	        System.out.println( "小样的,不错嘛!会说话了!");
	    }
	public void think() {
		System.out.println("别说话!认真思考!");
	}
}

(4)在主类E的main方法中创建Monkey与People类的对象类测试这2个类的功能。

package 期末复习BC;

public class E {
	 public static void main(String[] args) {
	        Monkey monkey = new Monkey("猴子");
	        People people = new People("人类");

	        monkey.speak();
	        people.speak();
	        people.think();
	    }

}

 

  1. 需求:首先定义一个抽象类Animal,抽象类中定义一个抽象方法play()抽象方法,创建 一个猫Cat类,继承Animal并重写play方法输出“我是猫,我玩老鼠”,创建一个狗类, 继承Animal并重写play方法输出“我是狗,我玩球”。最后编写测试类TestDemo,通 过多态创建猫,通过多态创建狗,并调用猫对象的play方法,狗对象的play方法

效果如下:

我是猫,我玩老鼠

我是狗,我玩球

第七章 常用实用类(集合)

第八章 异常处理

1.检查危险品(填空)

image.png

package 第七次上机作业;

public class Goods {
   boolean isDanger;
   String name;
   public void setIsDanger(boolean boo) {
      isDanger = boo;
   }
   public boolean isDanger() {
      return isDanger;  
   }
   public void setName(String s) {
      name = s;
   }
   public String getName() {
      return name;
   }
}
package 第七次上机作业;

public class Check {
   public static void main(String args[]) {
      Machine machine = new Machine();
      String name[] ={"苹果","炸药","西服","硫酸","手表","硫磺"};
      Goods [] goods = new Goods[name.length]; //检查6件货物  
      for(int i= 0;i<name.length;i++) {
         goods[i] = new Goods();
         if(i%2==0) {
            goods[i].setIsDanger(false);
            goods[i].setName(name[i]);
         }
         else {
            goods[i].setIsDanger(true);
            goods[i].setName(name[i]);
         } 
      }
      for(int i= 0;i<goods.length;i++) {
        try {
            machine.checkBag(goods[i]);
            System.out.println(goods[i].getName()+"检查通过");
        }
        catch(DangerException e) {
           //【代码2】 
        	e.toShow();
           System.out.println(goods[i].getName()+"被禁止!"); 
        }
      }     
   } 
}

package 第七次上机作业;

public class Machine {
  public void checkBag(Goods goods) throws DangerException {
     if(goods.isDanger()) {
         DangerException danger=new DangerException();
         //【代码1】 
         throw danger;
     }
     else {
         System.out.print(goods.getName()+"不是危险品! ");
     }
  }
} 

package 第七次上机作业;
public class DangerException extends Exception {
   String message;
   public DangerException() {
       message = "危险品!";
   }
   public void toShow() {
       System.out.print(message+" ");
   }
} 

2.编写程序:计算两数相乘的结果,要求乘数不能超过99,超过99就抛出异常

package 第七次上机作业;

import java.util.Scanner;

public class chapter02 {
    public static float multiply(float num1, float num2) throws Exception {
        if (num1 > 99 || num2 > 99) {
            throw new Exception("乘数超过99");
        }
        return num1 * num2;
    }

    public static void main(String[] args) {
        try {
        Scanner scanner=new Scanner(System.in);
   		 System.out.print("请输入第一个数的值:");
   		 float a=scanner.nextFloat();
   		 System.out.print("请输入第二个数的值:");
   		 float b=scanner.nextFloat();
          fl
          oat result = multiply(a, b);
          System.out.println("结果:" + result);
        } catch (Exception e) {
            System.out.println("发生异常:" + e.getMessage());
        }
    }
}

3.用户自定义异常练习(填空)。

(1)创建AgException异常类,继承Exception类。

(2)创建Exmple类,在Example类中创建一个readAgeO方法,该方法用于从键盘处输入年龄并检查年龄是否在18- 22岁之间,若超出该范围,则抛出AgeException异常。

(3)在主程序中捕获自定义异常,并做相应处理。

package 第七次上机作业;

import java.util.Scanner;

//创建AgException异常类,继承Exception类
class AgeException extends Exception {
 public AgeException(String message) {
     super(message);
 }
}

//Example类
class Example {
 public void readAge() throws AgeException {
     Scanner scanner = new Scanner(System.in);
     System.out.print("请输入年龄:");
     int age = scanner.nextInt();
     scanner.close();
     
     if (age < 18 || age > 22) {
         throw new AgeException("年龄超出范围");
     } else {
         System.out.println("年龄合法");
     }
 }
}

public class chapter03 {
 public static void main(String[] args) {
     Example example = new Example();
     try {
         
         example.readAge();
     } catch (AgeException e) {
         System.out.println("发生异常:" + e.getMessage());
     }
 }
}

4. 对下述代码进行异常处理:

public class ExceptionDemo {

public static void main(String[] args) (

int a=2,b=0;

System.out.println("This is an exception. +  a/b);

System.out.println("Finished");

}

}

填空题:

设空规律:

image.png

成绩统计程序:

image.png

image.png

package chapter_06.code_1;


/**
 * 
 * 成绩统计程序
 * 
 */
public class Score_Method {
	String[] names = { "张三丰", "郭靖", "乔峰", "张无忌", "杨过" };

	String[] cNames = { "JAVA", "C++", "Oracle", "Android" };

	static int[][] score = { { 87, 76, 63, 98 }, { 67, 79, 83, 75 },
			{ 90, 76, 65, 60 }, { 84, 88, 63, 79 }, { 72, 66, 58, 77 } };

	/*
	 * 该方法用来求课程平均分,参数name代表课程名称,返回平均分值
	 */
	public static double avg(String name) {
		double sum = 0;
		if (name.equalsIgnoreCase("JAVA")) {//【代码1】
			for (int i = 0; i < 5; i++) {
				sum = sum + score[i][0];
			}
		}
		if (name.equalsIgnoreCase("C++")) {
			for (int i = 0; i < 5; i++) {
				sum = sum + score[i][1];
			}
		}
		if (name.equalsIgnoreCase("Oracle")) {
			for (int i = 0; i < 5; i++) {
				sum = sum + score[i][2];//【代码2】
				
			}
		}
		if (name.equalsIgnoreCase("Android")) {
			for (int i = 0; i < 5; i++) {
				sum = sum + score[i][3];
			}
		}
		return sum / 5;
	}

	/*
	 * 该方法用来求学员成绩总分,参数uName代表学员名称,返回总分值
	 */
	public static double sum(String uName) {
		int sum = 0;
		if (uName.equalsIgnoreCase("张三丰")) {
			for (int i = 0; i < 4; i++) {
				
				sum = sum + score[0][i];//【代码3】
			}
		}
		if (uName.equalsIgnoreCase("郭靖")) {
			for (int i = 0; i < 4; i++) {
				sum = sum + score[1][i];
			}
		}
		if (uName.equalsIgnoreCase("乔峰")) {
			for (int i = 0; i < 4; i++) {
				sum = sum + score[2][i];
			}
		}
		if (uName.equalsIgnoreCase("张无忌")) {
			for (int i = 0; i < 4; i++) {
				sum = sum + score[3][i];
			}
		}
		if (uName.equalsIgnoreCase("杨过")) {
			for (int i = 0; i < 4; i++) {
				sum = sum + score[4][i];
			}
		}

		return sum;
	}

	/*
	 * 该方法用来对成绩排序,参数name代表课程名称。该方法直接输出排序结果,不返回任何值。
	 */
	public static void sort(String name) {

		if (name.equalsIgnoreCase("java")) {
			System.out.println("乔峰,张三丰,张无忌,杨过,郭靖");
		}
		if (name.equalsIgnoreCase("C++")) {
			System.out.println("张无忌,郭靖,张三丰,乔峰,杨过");
		}
		if (name.equalsIgnoreCase("oracle")) {
			System.out.println("郭靖,乔峰,张三丰,张无忌,郭靖");
		}
		if (name.equalsIgnoreCase("Android")) {
			System.out.println("张三丰,张无忌,杨过,郭靖,乔峰");
		}

	}

	/*
	 * 该方法用来得到某位学员某门课程的成绩,参数uName代表学员名称,参数cName代表课程名称。该方法返回指定的成绩值
	 */
	public static double get(String uName, String cName) {
		int i = 0, j = 0;
		if (uName.equalsIgnoreCase("张三丰")) {
			i = 0;
		} else if (uName.equalsIgnoreCase("郭靖")) {
			i = 1;
		} else if (uName.equalsIgnoreCase("乔峰")) {
			i = 2;
		} else if (uName.equalsIgnoreCase("张无忌")) {
			i = 3;
		} else if (uName.equalsIgnoreCase("杨过")) {
			i = 4;
		}
		if (cName.equalsIgnoreCase("java")) {
			j = 0;
		} else if (cName.equalsIgnoreCase("c++")) {
			j = 1;
		} else if (cName.equalsIgnoreCase("Oracle")) {
			j = 2;
		} else if (cName.equalsIgnoreCase("Android")) {
			j = 3;
		}
		return score[i][j];//【代码4】


	}
}

image.png

package chapter_06.code_1;

import java.util.Scanner;

/**
 * 
 * 成绩统计程序
 * 
 */
public class Score {
	public static void main(String[] args) {
		Score_Method d = new Score_Method();

		Scanner s = new Scanner(System.in);
		while (true) {
			System.out.println("请输入查询命令:");
			String comm = s.next();//【代码5】		
			double avg = 0;
			if (comm.equalsIgnoreCase("AVG")) {
				System.out.println("请输入课程名称:");
				String course = s.next();
				avg = d.avg(course);
				System.out.println(course + "这门课的平均分是:" + avg);

			} else if (comm.equalsIgnoreCase("sum")) {
				System.out.println("请输入要查询的学生姓名:");
				String name = s.next();
				double sum = d.sum(name);
				System.out.println(name + "的总分是:" + sum);
			} else if (comm.equalsIgnoreCase("sort")) {
				System.out.println("请输入课程名称:");
				String course = s.next();
				d.sort(course);//【代码6】
			
			} else if (comm.equalsIgnoreCase("get")) {
				System.out.println("请输入学生姓名:");
				String name = s.next();
				System.out.println("请输入课程名称:");
				String course = s.next();
				double score = d.get(name, course);
				System.out.println(name + "的" + course + "的成绩是:" + score);
			} else if (comm.equals("EXIT")) {
				break;
			}
		}

	}

}

酒店前台管理:

image.png

image.png

package chapter_06.code_2;

/**
 * 
 * 酒店前台管理程序
 * 
 */
public class Room_Method {
	static String[][] rooms = new String[12][10];

	public Room_Method() {
		int i = 0;
		for (i = 0; i < rooms.length; i++) {
			for (int j = 0; j < rooms[i].length; j++) {
				rooms[i][j] = "empty";//【代码1】
			}
		}
	}

	/*
	 * 查询所有房间的状态
	 */
	public static void search() {
		int i = 0;
		int j = 0;
		for (i = 0; i < rooms.length; i++) {

			for (j = 0; j < rooms[i].length; j++) {
				System.out.print(rooms[i][j] + " ");
			}
			//【代码2】
			if(j % 10 == 0) {
				System.out.println();
			}
		}
	}

	/*
	 * 某客人入住某房间
	 */
	public static void inRoom(String name, int room) { // 1201
		int i = room / 100;
		System.out.println(i);
		int j = room % 100;
		System.out.println(j);
		//【代码3】
		rooms[i - 1][j - 1]= name;
	}

	/*
	 * 某房间被退房
	 */
	public static void outRoom(int room) {
		int i = room / 100;
		int j = room % 100;
		rooms[i - 1][j - 1] = "empty";
	}
}

image.png

package chapter_06.code_2;

import java.util.Scanner;

/**
 * 
 * 酒店前台管理程序
 * 
 */
public class Room {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		Room_Method r = new Room_Method();

		while (true) {
			System.out.println("请输入命令:");
			String comm = s.next();
			if (comm.equalsIgnoreCase("search")) {
				r.search();//【代码4】
			} else if (comm.equalsIgnoreCase("IN")) {
				System.out.println("请输入客户姓名:");
				String name = s.next();
				System.out.println("入住房间号:");
				int room = s.nextInt();
				r.inRoom(name, room);//【代码5】

			} else if (comm.equalsIgnoreCase("out")) {
				System.out.println("请输入要退房的房间号:");
				int room = s.nextInt();
				r.outRoom(room);
			} else if (comm.equalsIgnoreCase("EXIT")) {
				break;//【代码6】
			}
		}
	}

}

单位转换:

image.png

image.png


package chap05;

//【代码1】 
 public class UnitConversion {
	private UnitConversion() {
	}

	
	final public static float f2C(float f)//【代码2】
	{
		return (f - 32) / 1.8F;
	}

	final public static float c2F(float c) {
		return c * 1.8F + 32.0F;
	}

	final public static float inch2Cm(float inch) {
		return inch * 2.54F;
	}

	final public static float cm2Inch(float cm) {
		return cm / 2.54F;
	}
}

package chap05;

public class UnitConversionTest {
	public static void main(String[] args) {
		System.out.println("34摄氏度 = " + //【代码3】UnitConversion.c2F(34) + "华氏度");
		System.out.println("200华氏度 = " + //【代码4】UnitConversion.f2C(200) + "摄氏度");

		System.out.println("15厘米 = " + UnitConversion.cm2Inch(15)+ "英寸");
		System.out.println("20英寸 = " + UnitConversion.inch2Cm(20)+ "厘米");
	}
}

银行计算利息

image.png image.png

package 第五次上机作业_2;
public class Bank {
   int savedMoney;
   int year;
   double interest;
   double interestRate = 0.29;
   public double computerInterest() {
      interest=year*interestRate*savedMoney;
      return interest;
   }
   public void setInterestRate(double rate) {
      interestRate = rate;
   }
}

package 第五次上机作业_2;
public class BankOfDalian extends Bank {
   double year;
   public double computerInterest() {
      super.year=(int)year; //【代码3】		 
      double r = year-(int)year;
      int day=(int)(r*1000);
      double yearInterest = super.computerInterest(); //【代码4】   		 
      double dayInterest = day*0.00012*savedMoney;
      interest= yearInterest+dayInterest;
      System.out.printf("%d元存在大连银行%d年零%d天的利息:%f元\n",
                         savedMoney,super.year,day,interest);
      return interest;
   }
}

package 第五次上机作业_2;
public class CommerceOfBank extends Bank {
   double year;
   public double computerInterest() {
      super.year=(int)year;	 
      double r = year-(int)year;
      int day=(int)(r*1000);
      double yearInterest = super.computerInterest(); //【代码4】   		 
      double dayInterest = day*0.00012*savedMoney;
      interest= yearInterest+dayInterest;
      System.out.printf("%d元存在商业 银行%d年零%d天的利息:%f元\n",
                         savedMoney,super.year,day,interest);
      return interest;
   }
}

package 第五次上机作业_2;
public class constructionBank extends Bank {
   double year;
   public double computerInterest() {
      //【代码1】
	   
	  super.year =(int)year;
      double r = year-(int)year;
      int day=(int)(r*1000);
      double yearInterest = super.computerInterest();
    		  //【代码2】 
    		  //super调用隐藏的computerInterest()方法
      double dayInterest = day*0.0001*savedMoney;
      interest= yearInterest+dayInterest;
      System.out.printf("%d元存在建设银行%d年零%d天的利息:%f元\n",
                         savedMoney,super.year,day,interest);
      return interest;
   }
}

接口计算器:

package 第六次上机作业_2;

interface Computer{ 
	//【代码1】
	int computer(int n,int m);
	} 
class Add //implements Computer{
	public int computer(int n, int m) { 
		return n+m; 
		} 
	} 
class Subtract implements Computer { 
	//【代码3】
	public int computer(int n, int m) { 
		return n-m; 
		} 
	} 
class Multiply implements Computer { 
	public int computer(int n, int m) {
		return n * m; 
		} 
	} 
class Divide implements Computer {
	public int computer(int n, int m) { 
		return n / m; 
		} 
	} 
class UseCompute {
	public void useCom(Computer com, int one,int two) { 
		int result =//【代码4】com.computer(one, two);
		System.out.println("结果是"+ result); 
		} 
	} 
public class Test { 
	public static void main(String[] args) { 
		Add add = new Add(); 
		Subtract sub = new Subtract(); 
		Multiply mul = new Multiply(); 
		Divide div = new Divide(); 
		//【代码5】UseCompute uc=new UseCompute();
		uc.useCom(add, 25, 5); 
		uc.useCom(sub, 25, 5); 
		uc.useCom(mul, 25, 5); 
		uc.useCom(div, 25, 5); 
		} 
	}

货物重量:

package 第六次上机作业;

interface ComputerWeight {
    public double computeWeight();
}
class Television implements ComputerWeight {
    //【代码1】重写computeWeight()方法
	private double weight;

    public Television(double weight) {
        this.weight = weight;
    }

    @Override
    public double computeWeight() {
        return weight;
    }
}
class Computer implements ComputerWeight {
    //【代码2】重写computeWeight()方法
	private double weight;

    public Computer(double weight) {
        this.weight = weight;
    }

    @Override
    public double computeWeight() {
        return weight;
    }
}  
class WashMachine implements ComputerWeight {
  //【代码3】重写computeWeight()方法
	private double weight;

    public WashMachine(double weight) {
        this.weight = weight;
    }

    @Override
    public double computeWeight() {
        return weight;
    }
}
class Truck {
   ComputerWeight [] goods;
   double totalWeights=0;
   Truck(ComputerWeight[] goods) {
       this.goods=goods;
   }
   public void setGoods(ComputerWeight[] goods) {
       this.goods=goods;
   }
   public double getTotalWeights() {
      totalWeights=0;
     //【代码4】计算totalWeights
      for (int i=0;i<goods.length;i++) {
          totalWeights += goods[i].computeWeight();
      }
      return totalWeights;
   }    
}
public class CheckCarWeight {
   public static void main(String args[]) {
      ComputerWeight[] goods=new ComputerWeight[650]; //650件货物
      for(int i=0;i<goods.length;i++) { //简单分成三类
           if(i%3==0)
             goods[i]=new Television(100);
           else if(i%3==1)
             goods[i]=new Computer(200);
           else if(i%3==2)
             goods[i]=new WashMachine(250);
     } 
     Truck truck=new Truck(goods);
     System.out.printf("\n货车装载的货物重量:%-8.5f kg\n",truck.getTotalWeights());
     goods=new ComputerWeight[68]; //68件货物
     for(int i=0;i<goods.length;i++) { //简单分成两类
          if(i%2==0)
            goods[i]=new Television(30);
          else 
            goods[i]=new WashMachine(38);
     } 
     truck.setGoods(goods);
     System.out.printf("货车装载的货物重量:%-8.5f kg\n",truck.getTotalWeights());
   }
}

package 第六次上机作业;

abstract class Employee {
   public abstract double earnings();
}
class YearWorker extends Employee {

	@Override
	public double earnings() {
		// TODO 自动生成的方法存根
		return 60000;
	}
    //【代码1】重写earnings()方法
	
}
class MonthWorker extends Employee {

	@Override
	public double earnings() {
		// TODO 自动生成的方法存根
		return 12*5000;
	}
    //【代码2】重写earnings()方法
	
}
class WeekWorker extends Employee {

	@Override
	public double earnings() {
		// TODO 自动生成的方法存根
		return 12*4*5000;
	}
    //【代码3】重写earnings()方法。
	
}
class DayWorker extends Employee {

	@Override
	public double earnings() {
		// TODO 自动生成的方法存根
		return 8*12*4*5000;
	}
    //【代码3】重写earnings()方法。
	
}
class Company {
   Employee[] employee;
   double salaries=0;
   Company(Employee[] employee) {
      this.employee=employee;
   }
   public double salariesPay() {
       salaries=0;
       //【代码4】计算salaries。
       for(int i=0;i<employee.length;i++)
       {
    	   salaries+=employee[i].earnings();
       }
       return salaries;
   }    
}
public class CompanySalary {
   public static void main(String args[]) {
      Employee [] employee=new Employee[29]; //公司有29名雇员
      for(int i=0;i<employee.length;i++) {   //雇员简单地分成四类
          if(i%4==0)
              employee[i]=new WeekWorker();
          else if(i%4==1)
              employee[i]=new MonthWorker();
          else if(i%4==2)
             employee[i]=new YearWorker();
          else if(i%4==3)
              employee[i]=new DayWorker();
          
      } 
      Company company=new Company(employee);
      System.out.println("公司薪水总额:"+company.salariesPay()+"元");
   }
}



小狗的状态:


package 第六次上机作业;

interface DogState {
	void showState();
}
class SoftlyState implements DogState {
    public void showState() {
       System.out.println("听主人的命令");
    }
}
class MeetEnemyState implements DogState {
   public void showState() {
       System.out.println("狂叫,并冲向去很咬敌人");
    } 
}  
class MeetFriendState implements DogState {
   public void showState() {
       System.out.println("晃动尾巴,表示欢迎");
    }
}
class MeetAnotherDog implements DogState {
   public void showState() {
       System.out.println("嬉戏");
    }
}
class Dog {
	private DogState state;
	public void show() {
	// TODO 自动生成的方法存根
	state.showState();
}
   public void setState(DogState s) {
     this.state = s;
   }

}
public class CheckDogState {
   public static void main(String args[]) {
	   Dog yellowDog =new Dog();
	      System.out.print("狗在主人面前:");
	      yellowDog.setState(new SoftlyState());
	      yellowDog.show();
	      System.out.print("狗遇到敌人:");
	      yellowDog.setState(new MeetEnemyState());
	      yellowDog.show();
	      System.out.print("狗遇到朋友:");
	      yellowDog.setState(new MeetFriendState());
	      yellowDog.show(); 
	      System.out.print("狗遇到同伴:");
	      yellowDog.setState(new MeetAnotherDog());
	      yellowDog.show(); 
   }
}

USB接口:

package 内部类和实用类;

interface USB{
	public void start();
	public void stop();
}
class Flash implements USB{

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("音乐开始");
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("音乐结束");
	}
	
}
class Print implements USB{

	@Override
	public void start() {
		// TODO Auto-generated method stub
		System.out.println("打印开始");
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("打印结束");
	}
	
}

class Computer{
	
	public void plugin(USB usb){
	      usb.start();  		//【代码1】
	      usb.stop();//【代码2】
	}
	
	
}

public class USBdemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer computer =new Computer();
		USB flash=new Flash();
			computer.plugin(flash);			//【代码3】
		USB print=new Print();
		computer.plugin(print);				//【代码4】
	}

}

检查危险品:

image.png

package 第七次上机作业;
public class DangerException extends Exception {
   String message;
   public DangerException() {
       message = "危险品!";
   }
   public void toShow() {
       System.out.print(message+" ");
   }
} 


package 第七次上机作业;

public class Machine {
  public void checkBag(Goods goods) throws DangerException {
     if(goods.isDanger()) {
         DangerException danger=new DangerException();
         //【代码1】 
         throw danger;
     }
     else {
         System.out.print(goods.getName()+"不是危险品! ");
     }
  }
} 


package 第七次上机作业;

public class Goods {
   boolean isDanger;
   String name;
   public void setIsDanger(boolean boo) {
      isDanger = boo;
   }
   public boolean isDanger() {
      return isDanger;  
   }
   public void setName(String s) {
      name = s;
   }
   public String getName() {
      return name;
   }
}
package 第七次上机作业;

public class Check {
   public static void main(String args[]) {
      Machine machine = new Machine();
      String name[] ={"苹果","炸药","西服","硫酸","手表","硫磺"};
      Goods [] goods = new Goods[name.length]; //检查6件货物  
      for(int i= 0;i<name.length;i++) {
         goods[i] = new Goods();
         if(i%2==0) {
            goods[i].setIsDanger(false);
            goods[i].setName(name[i]);
         }
         else {
            goods[i].setIsDanger(true);
            goods[i].setName(name[i]);
         } 
      }
      for(int i= 0;i<goods.length;i++) {
        try {
            machine.checkBag(goods[i]);
            System.out.println(goods[i].getName()+"检查通过");
        }
        catch(DangerException e) {
           //【代码2】 
        	e.toShow();
           System.out.println(goods[i].getName()+"被禁止!"); 
        }
      }     
   } 
}


年龄异常:

package 期末总复习;

public class AgeException extends Exception{

	public AgeException(String msg) {
		super(msg); //【代码1】调用父类的构造方法
	}

}

package 期末总复习;

public class TestAge {

	public static void main(String[] args) {
		int i = -1;
		 {//【代码2】
			i =Example.readAge(); //【代码3】
			System.out.println(i);
		} catch (AgeException e)//【代码4】
			{
			System.out.println(e.getMessage());
		}
	}

	private static int getAge() {
		// TODO 自动生成的方法存根
		return 0;
	}

}

字符流控制:

package 期末总复习;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyCharFile {
	public static void main(String[] args) {
		FileReader fr = null; // 声明字符输入流
		FileWriter fw=null;//【代码1】 声明字符输出流
		try {
			fr = new FileReader("D:/mytest.txt");
			fw = new FileWriter("E:/mycopy.txt");
			int b;
			while ((b=fr.read())!=-1) { // 【代码2】读入
				fw.write(b);// 【代码3】写出
			} // 复制完成
		} catch (FileNotFoundException e) {
			System.out.println("文件不存在!");
		} catch (IOException e) {
			System.out.println("输入输出异常!");
		}finally{  //【代码4】
			if (fr != null) {
				try {
					fr.close();
					// 【代码5】关闭字符输入流
				} catch (IOException e) {
					System.out.println("输入输出异常!");
				}
			}
			if (fw != null) {
				try {
					fw.close(); // 关闭字符输出流
				} catch (IOException e) {
					System.out.println("输入输出异常!");
				}
			}
		}
		System.out.println("\n 文件复制完成.");
	}
}

键盘读取数据写入文件:

package 期末总复习;

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;

//【代码1】导入IO包

public class BufferedTest {
	public static void main(String[] args) {
		InputStreamReader in;
		FileWriter out;
		BufferedReader br=null;
		//【代码2】声明缓存流
		try {
			in = new InputStreamReader(System.in);
			br = new BufferedReader(in);//代码3
			out = new FileWriter("d:/test.txt");
			String str = br.readLine();
               //输入字符“exit”时,停止读取
                   while (!str.equals("exit")) {//【代码4】
				System.out.println("str=" + str);
				out.write(str + "\r\n");
				str=br.readLine();//【代码5】再次读取
			}
			out.flush();
			in.close();
			br.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



9.3学生类的串行化实例

image.png

//定义学生类,包含学生的基本信息(包含学号,姓名和考试成绩),键盘接受学生信息,并将学生信息保存到文件studentscore.obj中。


package tiankong;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;

public class StudentScore {

	public static void main(String[] args) {
		String id, name;
		int score;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入学号:");
		id = sc.next();
		System.out.println("请输入姓名:");
		name = sc.next();
		System.out.println("请输入成绩:");
		score = sc.nextInt();
		Student s = new Student(id,name,score);//【代码2】
		try {
			FileOutputStream fw = new FileOutputStream("D:/studentscore.obj");
			ObjectOutputStream oos = new ObjectOutputStream(fw);
			oos.writeObject(s);//【代码3】用oos调用writeObject()方法,将Student对象s写入对象输出流oos中
			oos.close();

			FileInputStream fr = new FileInputStream("D:/studentscore.obj");
			ObjectInputStream ois = new ObjectInputStream(fr);//【代码4】创建对象输入流对象
			Student s1 = (Student) ois.readObject();//【代码5】强制类型转换为Student类
			System.out.println(s1.getId() + "," + s1.getName() + ","
					+ s1.getScore());
			ois.close();
		} catch (IOException e) {
			System.out.println("输入输出异常!");
		} catch (ClassNotFoundException e) {
			System.out.println("类不存在!");
		}

	}

}

//定义学生类,包含学生的基本信息
//(包含学号,姓名和考试成绩),键盘接受学生信息,
//并将学生信息保存到文件studentscore.obj中。

package tiankong;

import java.io.Serializable;



public class Student implements Serializable {
	private String id;
	private String name;
	private int score;

	//【代码1】设置属性的getters和setters方法
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}
	public Student(String id, String name, int score) {
		this.id = id;
		this.name = name;
		this.score = score;
	}

	
}

计算器:

package 期末总复习;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {
	String number1;
	String number2;
	String operate;
	String number="";
	double result;
	
	JFrame jf;// 表示该计算机界面的窗体
	JTextField jtf;// 文本域输入框
	JButton[] jbs;// 存放16个按钮组件的数组
	private JButton clear;// 清空按钮组件

	public Calculator() {
		jf = new JFrame("计算器v1.1");// 初始化窗体组件
		jtf = new JTextField(15);// 初始化文本域组件
		clear = new JButton("清空");// 初始化按钮
		clear.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				if(e.getSource()==clear){//e调用getSourse()方法得到事件源,判断是否为clear
					jtf.setText("");
					number1=null;
					number2=null;
					number="";
				}
			}
		});
		jbs = new JButton[16];// 初始化数组
		String str = "123+456-789*0.=/";
		for (int i = 0; i < jbs.length; i++) {
			jbs[i] = new JButton(str.charAt(i) + "");
			jbs[i].addActionListener(new ButClick());//为每个按钮添加ActionListener事件,调用addActionListener()方法,方法参数为ButClick的对象
			
		}
		init();//调用init()方法,实现界面布局模式的设计
		jf.setSize(300, 300);
		jf.setVisible(true);
	}

	public void init() {
		jf.setLayout(new BorderLayout());
		JPanel jp1 = new JPanel();
		JPanel jp2 = new JPanel();

		jp1.setLayout(new FlowLayout());
		jp1.add(jtf);
		jp1.add(clear);

		jp2.setLayout(new GridLayout(4, 4));
		for (int i = 0; i < jbs.length; i++) {
			jp2.add(jbs[i]);
		}

		jf.add(jp1, BorderLayout.NORTH);
		jf.add(jp2, BorderLayout.CENTER);
	}
class ButClick implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String text=((JButton)e.getSource()).getText();
		if(text.equals("=")){
		if(operate.equals("+")){
			result=Double.parseDouble(number1)+Double.parseDouble(number2);	
			jtf.setText(result+"");	
		}else if(operate.equals("-")){
			result=Double.parseDouble(number1)-Double.parseDouble(number2);	
			jtf.setText(result+"");		
		}else if(operate.equals("*")){
			result=Double.parseDouble(number1)*Double.parseDouble(number2);	
			jtf.setText(result+"");	
		}else if(operate.equals("/")){
			result=Double.parseDouble(number1)/Double.parseDouble(number2);	
			jtf.setText(result+"");	
		}number="";
		
		number1=null;
		number2=null;
		number="";
		operate=null;
		}else if(text.equals("+")){
		operate="+";
		number=number+text;
		jtf.setText(number);
		}else if(text.equals("-")){
			operate="-";
			number=number+text;
			jtf.setText(number);
		}else if(text.equals("*")){
			operate="*";
			number=number+text;
			jtf.setText(number);
		}else if(text.equals("/")){
			operate="/";
			number=number+text;
			jtf.setText(number);
			
		}else if(number1!=null&&operate==null){
	      number1=number1+text;
		  number=number+text;
		  jtf.setText(number);
		}else if(number2!=null&&operate!=null){
			number2=number2+text;
			number=number+text;
			jtf.setText(number);
		}
		else{
			if(number1==null){
				number1=text;
			}else{
				number2=text;
			}
			number=number+text;
			jtf.setText(number);
		}
	}
	
}
	

	public static void main(String[] args) {
		//创建Calculator对象
Calculator calculator=new Calculator();
	}
}


鼠标事件:

package 期末tk;

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;

public class MouseDemo {
	private JFrame jf;// 窗体
	private JLabel label;// 显示鼠标的当前位置
	private JTextArea jta;// 输出鼠标操作的文本域

	public MouseDemo(){
		jf=new JFrame("Mouse Event Test!");
		label=new JLabel(" ");
		jta=new JTextArea(30,40);
		jf.setLayout(new BorderLayout());//【代码1】设置窗体布局管理器
		jf.add(label,BorderLayout.NORTH);
		jf.add(jta,BorderLayout.CENTER);
		jta.addMouseListener (new MouseAdapter() {//【代码2】
			public void mouseClicked(MouseEvent e){
				String str = null;
				switch(e.getButton()){
				case MouseEvent.BUTTON1:str = "左";break;
				case MouseEvent.BUTTON2:str = "中";break;
				case MouseEvent.BUTTON3:str = "右";break;
				
				}
				jta.append("鼠标"+str+"键被点击("+e.getX()+","+e.getY()+")\n");//【代码3】
			}
			public void mouseEntered(MouseEvent e){
				jta.append("鼠标进入!\n");
			}
			public void mouseExited(MouseEvent e){
				jta.append("鼠标移出!\n");
			}
			
		});
		jta.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseMoved(MouseEvent e){
				label.setText("("+e.getX()+","+e.getY()+")");//【代码4】
			}
		});
		
		jf.setSize(300,300);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}

	public static void main(String[] args) {
		MouseDemo mouseDemo=new MouseDemo();//【代码5】
	}
}

下拉列表框:

package 期末tk;

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ItemEventTest {
	private JFrame jf;// 窗体
	private JComboBox jcb1, jcb2;// 下拉列表框用于表示省份和城市
	private JLabel label1, label2;// 标签组件
	private String[] pri;// 用于存放省份的数组
	private String[][] city;// 用于存放城市的数组

	public ItemEventTest(String[] pri, String[][] city) {
		
		this.pri=pri;//【代码1】
		this.city = city;
		jf = new JFrame("Item Listener Test!");
		jcb1 = new JComboBox(pri);
		jcb2 = new JComboBox(city[0]);
		label1 = new JLabel("省份:");
		label2 = new JLabel("城市:");

		jf.setLayout(new FlowLayout());
		jf.add(label1);
		jf.add(jcb1);
		jf.add(label2);
		jf.add(jcb2);
		addEventHandler();//【代码2】
	}
	public void addEventHandler(){
		jcb1.addItemListener(new ItemListener() {//【代码3】
			
			public void itemStateChanged(ItemEvent e) {
				// TODO Auto-generated method stub
				int index = jcb1.getSelectedIndex();
				jcb2.removeAllItems();
				for(int i =0;i<city[index].length;i++){
					jcb2.addItem(city[index][i]);
				}
			}
		});
	}

	public void showMe() {
		jf.setSize(400, 300);
		jf.setVisible(true);//【代码4】
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		String[] pri = { "==请选择==", "河北", "山东", "江苏", "浙江", "陕西" };
		String[][] city = { { "==请选择==" }, { "石家庄", "保定", "邯郸", "唐山", "秦皇岛" },
				{ "济南", "青岛", "烟台", "威海", "潍坊" },
				{ "南京", "苏州", "无锡", "常州", "连云港" },
				{ "杭州", "温州", "宁波", "金华", "台州" },
				{ "西安", "咸阳", "汉中", "延安", "宝鸡" } };
		new ItemEventTest(pri, city).showMe();//【代码5】
	}
}