第二章 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。
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();
}
}
第六章 继承和多态
- 按要求编写一个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();
}
}
- 需求:首先定义一个抽象类Animal,抽象类中定义一个抽象方法play()抽象方法,创建 一个猫Cat类,继承Animal并重写play方法输出“我是猫,我玩老鼠”,创建一个狗类, 继承Animal并重写play方法输出“我是狗,我玩球”。最后编写测试类TestDemo,通 过多态创建猫,通过多态创建狗,并调用猫对象的play方法,狗对象的play方法
效果如下:
我是猫,我玩老鼠
我是狗,我玩球
第七章 常用实用类(集合)
第八章 异常处理
1.检查危险品(填空)
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");
}
}
填空题:
设空规律:
成绩统计程序:
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】
}
}
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;
}
}
}
}
酒店前台管理:
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";
}
}
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】
}
}
}
}
单位转换:
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)+ "厘米");
}
}
银行计算利息
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】
}
}
检查危险品:
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学生类的串行化实例
//定义学生类,包含学生的基本信息(包含学号,姓名和考试成绩),键盘接受学生信息,并将学生信息保存到文件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】
}
}