java实验报告_2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一
1.编写一个程序,在屏幕上显示如下信息:
**************************
welcome<你的名字>
**************************
想一想:怎样让用户在运行程序的时候指定“你的名字”
public class Experiment1_1{
public static void main(String[]args){
System.out.println("*************************");
System.out.println("welcome宁");
System.out.println("*************************");
}
}
2.写一个Java程序打印出下列信息:
☐姓名
☐性别
☐年龄
☐学号
☐系和专业
☐兴趣爱好
public class Experiment1_2{
public static void main(String args[])
{
System.out.println("姓名");
System.out.println("性别");
System.out.println("年龄");
System.out.println("学号");
System.out.println("系和专业");
System.out.println("兴趣爱好");
}
}
3.编写一个程序,使用while循环计算1~1000之间能被3和7同时整除的整数之和public class Experiment1_3{
public static void main(String[]args){
int i=1;
int sum=0;
while(i<=1000)
{
if(i%7==0&&i%3==0)
sum+=i;
i++;
}
System.out.print("sum="+sum);
}
}
实验二
1.有一函数,编写一个程序,从键盘输入一个x 值,程序输出y 的值
import java.util.Scanner;
public class Experiment2_1{
public static void main(String[]args){
Scanner reader=new Scanner(System.in);
int x=reader.nextInt();
if(x<0)
System.out.println(-1+2*x);
else if(x==0)
System.out.println(-1);
else
System.out.println(-1+3*x);
}
}
2.编写一个程序,使用for 循环计算8+88+888+8888+…的前十项之和
要求:在上述程序中设置断点和观察点进行单步调试
public class Experiment2_2{
public static void main(String[]args){
int sum=0;
int temp=8;
for(int i=1;i<=10;i++)
{
sum+=temp;
temp=temp*10+8;
}
System.out.println("sum="+sum);
}
}
3.利用for 循环打印9*9表
1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
1*5=52*5=103*5=154*5=205*5=25
1*6=62*6=123*6=184*6=245*6=306*6=36
⎪⎩⎪⎨⎧>+-=-<+-=0
3101021x x x x x y
1*7=72*7=143*7=214*7=285*7=356*7=427*7=49
1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64
1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81要求:对上述程序中的方法和语句加上注释
public class Experiment2_3{
public static void main(String[]args){
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
System.out.printf("%4d*%d=%d",i,j,j*i);
System.out.print('\n');
}
}
}
4.从键盘输入一个百分制的成绩,输出相应的等级。
90分以上A级
80~89B级
70~79C级
60~69D级
60分以下E级
import java.util.Scanner;
public class Experiment2_4{
public static void main(String[]args){
Scanner reader=new Scanner(System.in);
int score=reader.nextInt();
switch(score/10)
{
case10:
case9:
System.out.println("A");break;
case8:
System.out.println("B");break;
case7:
System.out.println("C");break;
case6:
System.out.println("D");break;
case5:
case4:
case3:
case2:
case1:
case0:
System.out.println("E");break;
}
}
}
实验三
1.实验要求:
使用Java编写控制台应用程序
用户从键盘输入月份,使用switch语句输出该月份的天数
如果输入月份为2月份,则程序提示让用户输入年份,再输出结果import java.util.*;
public class Experiment3_1{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
int month,day,year;
System.out.printf("请用户输入月份:");
month=reader.nextInt();
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:System.out.println("本月31天");break;
case4:
case6:
case9:
case11:System.out.println("本月30天");break;
case2:
System.out.printf("请用户输入年份:");
year=reader.nextInt();
if(year%4==0&&year%100!=0||year%400==0){
System.out.printf("本月29天");
}
else{
System.out.printf("本月28天");
}
}
}
}
2.实验要求:
使用Java编写控制台应用程序
输出九九乘法表
public class Experiment3_2{
public static void main(String args[]){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.printf("%d*%d=%-2d",j,i,i*j);
System.out.printf("");
}
System.out.printf("\n");
}
System.out.printf("\n");
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
System.out.printf("%d*%d=%-2d",i,j,i*j);
System.out.printf("");
}
System.out.printf("\n");
}
System.out.printf("\n");
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
System.out.printf("%d*%d=%-2d",i,j,i*j);
System.out.printf("");
}
System.out.printf("\n");
for(int k=1;k<=i;k++){
System.out.printf("");
}
}
}
}
3实验要求:
使用Java编写控制台应用程序
计算有固定收入的党员每月所交纳的党费。
月工资收入400元及以下者,交纳月工资总额的0.5%;月工资收入401~600元者,交纳月工资总额的1%;
月工资收入601~800元者,交纳月工资总额的1.5%;月工资收入801~1500
元者,交纳月工资总额的2%;月工资收入1500元以上者,交纳月工资总
额的3%;
import java.util.Scanner;
public class Experiment3_3{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
System.out.println("请用户输入工资:");
float salary;
float money=0;
salary=reader.nextFloat();
if(salary<=400&&salary>=0){
money=(float)(salary*0.005);
}
else if(salary>=401&&salary<=600){
money=(float)(salary*0.01);
}
else if(salary>=601&&salary<=800){
money=(float)(salary*0.015);
}
else if(salary>=801&&salary<=1500){
money=(float)(salary*0.02);
}
else{
money=(float)(salary*0.03);
}
System.out.println("应缴党费:"+money);
}
}
⏹ 4.实验要求:
使用Java编写控制台应用程序
用户从键盘输入n天的温度,n由用户指定,求出平均温度、最高和最低温度,要求输出结果如下图所示。
import java.util.*;
public class Experiment3_4{
public static void main(String args[]){
System.out.printf("How many day's temperatures?");
Scanner reader=new Scanner(System.in);
float sum=0,average=0;
int day=0;
day=reader.nextInt();
float[]tem=new float[day];
for(int i=0;i<day;i++){
tem[i]=reader.nextFloat();
sum+=tem[i];
}
float max=tem[0];
float min=tem[0];
for(int i=0;i<day-1;i++){
if(tem[i]<tem[i+1])
max=tem[i+1];
}
for(int i=0;i<day-1;i++){
if(tem[i]>tem[i+1])
min=tem[i+1];
}
average=sum/day;
System.out.println("Average temperature:"+average);
System.out.println("Maxmun temperature:"+max);
System.out.println("Minmum temperature:"+min);
}
}
实验四
1.定义一个int型的一维数组,包含10个元素,从键盘分别赋一些随机整数,然后求
出所有元素的最大值,最小值,平均值,和值,并输出出来
import java.util.*;
public class j1{
public static void main(String args[]){
int[]a=new int[10];
int b,i,min=0,max=0,sum=0,aver;
for(i=0;i<a.length;i++){
a[i]=(int)(Math.random()*100);
min=max=a[0];
if(a[i]<=a[0])
min=a[i];
else max=a[i];
sum+=a[i];
}aver=sum/a.length;
System.out.printf("the average number is%d",aver);
System.out.printf("\n");
System.out.printf("the min number is%d",min);
System.out.printf("\n");
System.out.printf("the max number is%d",max);
}
}
2定义一个int型的一维数组,包含10个元素,分别赋值为1-10,然后将数组中的元素都向前移一个位置,即,a[0]=a[1],a[1]=a[2],…最后一个元素的值是原来第一个元素的值,然后输出这个数组
import java.util.*;
public class j2{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
int x,y;
for(x=1;x<=9;x++){
for(y=1;y<=9;y++)
System.out.printf("%d*%d=%-4d",x,y,x*y);
System.out.printf("\n");
}
}
}
3.定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生
40个0-100之间的随机整数,将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来
import java.util.*;
public class j3{
public static void main(String[]argv){
int[]array=new int[40];
int i=0,sum=0;
double avg=0.0;
while(i<40){
array[i]=(int)(Math.random()*100);
//System.out.println(array[i]);i++;}
i=0;
while(i<40){sum+=array[i];i++;}
avg=sum*1.0/i;
System.out.println("学员成绩的平均分:"+avg);
int j=0;i=0;
while(i<40)
{if(array[i]<avg){
j++;}
i++;
}System.out.println("成绩低于平均分的学员的人数为:"+j);
}
}
}
4.创建一个整型数组f,拥有20个元素,并将它的各个元素赋值如下,然后,输出它
们,并编写一段程序输出f[n]的值,其中,n为任意
f[0]=1,f[1]=2
f[i]=f[i-1]+f[i-2]
public class j2{
public static void main(String[]args)
{
int f[]=new int[20];
int w=0;
f[0]=1;
f[1]=2;
for(int i=2;i<f.length;i++)
{
f[i]=f[i-1]+f[i-2];
}
for(int i=0;i<f.length;i++){
System.out.println(f[i]);
}
}
}
实验五
1.有一列乱序的字符,‘a’、‘d’、‘m’、‘z’、‘h’、‘c’、‘o’,排序并按照英文字母表的逆
序输出
ublic class Experiment5_1{
public static void main(String args[]){
char temp;
char[]a={'a','d','m','z','h','c','o'};
for(int i=0;i<6;i++){
for(int j=0;j<6-i;j++){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<=6;i++)
System.out.println(a[i]);
}
}
2.编程实现矩形类,其中包含常量:PI,方法:getPerimeter(周长)、getArea(面积)、
getVolume(体积),并创建对象测试该类
import java.util.Scanner;
class Rectangular{
double PI=3.14,a,b,h;
Rectangular(){}
Rectangular(double x,double y,double z){
a=x;
b=y;
h=z;
}
double getPerimeter(){
return(2*a+2*b);
}
double getArea(){
return a*b;
}
double getVolume(){
return a*b*h;
}
}
public class Experiment5_2{
public static void main(String arg[]){
double perimeter=0,area=0,volume=0;
Rectangular Test;
Scanner reader=new Scanner(System.in);
Test=new Rectangular(reader.nextInt(),reader.nextInt(),reader.nextInt());
perimeter=Test.getPerimeter();
System.out.println("周长为"+perimeter);
area=Test.getArea();
System.out.println("面积为"+area);
volume=Test.getVolume();
System.out.println("体积为"+volume);
}
}
3.编写一个计数器类,其中包括属性counter用来保存该计数器类的对象数目;每个
对象可以打印其序号(serial number),显示其是第几个生成的对象。
class Counter{
public static int num=0;
public Counter(){
num++;
System.out.println("这是第"+num+"个对象");
}
}
public class Experiment5_3{
public static void main(String args[]){
Counter a=new Counter();
Counter b=new Counter();
Counter c=new Counter();
Counter d=new Counter();
}
}
4.定义一个满足下列条件的学生类,并创建其对象,进行测试。
此学生类拥有属性名字、学号、分数(不止一门课程,共5门)
此类提供接受分数输入的方法,计算并返回总分及平均分的方法
import java.util.Scanner;
class Student{
int score1,score2,score3,score4,score5,sum,aver;
String name,number;
Student(){}
Student(String a,String b,int c,int d,int e,int f,int g){
name=a;
number=b;
score1=c;
score2=d;
score3=e;
score4=f;
score5=g;
}
public float Sum(){
return(score1+score2+score3+score4+score5);
}
public float Aver(){
return(score1+score2+score3+score4+score5)/5;
}
}
public class Experiment5_4{
public static void main(String arg[]){
float sum,aver;
Student student;
Scanner reader=new Scanner(System.in);
student=new Student(reader.next(),reader.next(),reader.nextInt(),reader.nextInt(),reader.nextInt(),reader. nextInt(),reader.nextInt());
sum=student.Sum();
System.out.println("总成绩为"+sum);
aver=student.Aver();
System.out.println("平均成绩为"+aver);
}
}
实验六
1.设一个班有4个学生,每个学生有姓名、学号、成绩等信息,请利用对象数组的概念编程,求该班学生平均成绩
class Student{
String name,number;
int score;
static int sum=0,counter=0;
Student(String name,String number,int a){
=name;
this.number=number;
this.score=a;
sum+=score;
counter++;
}
public int Average(){
return sum/counter;
}
}
public class Experiment6_1{
public static void main(String args[]){
Student[]student=new Student[4];
student[0]=new Student("ningning","20132610001",100);
student[1]=new Student("qiqi","20132610002",100);
student[2]=new Student("huizhang","20132610003",69);
student[3]=new Student("yongge","20132610004",59);
int ave=student[3].Average();
System.out.println("平均成绩是"+ave);
}
}
2.有一个二维整型数组
int[][]array={{1,2,3},{4,5}};
请通过for循环和foreach循环两种方法遍历打印数组的值。
public class Experiment6_2{
public static void main(String args[]){
int[][]array={{1,2,3},{4,5}};
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
System.out.print(array[i][j]);
}
}
}
}
3.设计一个矩阵类,其中允许用户输入矩阵的列数和行数,以及每个元素,并提供矩阵加法和减法的方法。
最终运行结果如下图:
import java.util.Scanner;
class Matrix{
int length,width;
String sum;
Matrix(int length,int width){
this.length=length;
this.width=width;
}
public void Calculate(){
float a[][]=new float[length][width];
float b[][]=new float[length][width];
float c[][]=new float[length][width];
Scanner reader=new Scanner(System.in);
System.out.println("请输入行列式A=");
for(int i=0;i<length;i++){
for(int j=0;j<width;j++)
a[i][j]=reader.nextFloat();
}
System.out.println("请输入行列式B=");
for(int i=0;i<length;i++){
for(int j=0;j<width;j++)
b[i][j]=reader.nextFloat();
}
for(int i=0;i<length;i++){
for(int j=0;j<width;j++){
c[i][j]=a[i][j]+b[i][j];
System.out.print(c[i][j]+"\t");
}
System.out.println("\n");
}
for(int i=0;i<length;i++){
for(int j=0;j<width;j++){
c[i][j]=a[i][j]-b[i][j];
System.out.print(c[i][j]+"\t");
}
System.out.println("\n");
}
}
}
public class Experiment6_3{
public static void main(String arg[]){
Scanner reader=new Scanner(System.in);
System.out.println("请输入行数和列数");
Matrix matrix=new Matrix(reader.nextInt(),reader.nextInt());
matrix.Calculate();
}
}
实验七
1.编写一个封装学生的类Student,包括域:“学号”、“性别”、“年龄”;方法:“获
得学号”、“获得性别”、“获得姓名”、“获得年龄”、“设置年龄”,“设置性别”;另一个方法public String toString()把Student对象的所有属性信息组合成一个字符串,写程序检验这个功能
import java.util.Scanner;
class Students{
private String name,number,sex;
private int age;
Students(String name,String number,String sex,int age){
=name;
this.number=number;
this.SetSex(sex);
this.SetAge(age);
}
void SetSex(String sex){
this.sex=sex;
}
void SetAge(int age){
this.age=age;
}
public String toString(){
return(name+""+number+""+sex+""+age);
}
}
public class Experiment7_1{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
Students student1=new Students("yongge","20132614562","男",20);
System.out.println("输入1设置性别,输入2设置年龄");
switch(reader.nextInt()){
case1:
System.out.println("请设置性别为:");
student1.SetSex(reader.next());
break;
case2:
System.out.println("请设置年龄为:");
student1.SetAge(reader.nextInt());
break;
}
String information;
information=student1.toString();
System.out.println(information);
}
}
2.定义一个一维数组,存储随机生成的200个1~100以内的整数,统计每个整数出现
的次数。
最终打印出各个值出现的次数。
●生成随机数的方法:Math.random()生成大于等于0.0小于1.0的浮点数
●生成100以内的随机整数:
(int)(100×Math.random()+1)
public class Experiment7_2{
public static void main(String args[]){
int[]a=new int[200];
int[]b=new int[100];
for(int i=0;i<=99;i++)
b[i]=0;
for(int i=0;i<=199;i++)
a[i]=(int)(100*Math.random()+1);
for(int j=0;j<=199;j++)
b[a[j]-1]++;
for(int k=0;k<=99;k++)
System.out.print(k+"出现的次数是"+b[k]+"次"+"");
}
}
3.编写程序,定义一个学生数组,保存学生的基本信息包括
●姓名、学号、性别、年龄、4门课程的成绩以及4门课程对应的学分;可以求出学
生的平均成绩(各科课程分数×各科学分/总学分)
●然后输出以下信息:
●年龄最大的学生信息(包括其所有状态信息)
●成绩最好的学生信息(比较学生的平均成绩)
●成绩最差的学生信息
●有两门以上不及格的学生信息
●按照平均成绩对学生数组排序,并按排序结果打印学生的信息。
class Student{
String name,number,sex;
int
age,credit1=1,credit2=2,credit3=3,credit4=4,score1,score2,score3,score4;
Student(){}
Student(String name,String number,String sex,int age,int score1,int score2,int score3,int score4){
=name;
this.number=number;
this.sex=sex;
this.age=age;
this.score1=score1;
this.score2=score2;
this.score3=score3;
this.score4=score4;
}
void Student(String name,String number,String sex,int age,int score1,int score2,int score3,int score4){
=name;
this.number=number;
this.sex=sex;
this.age=age;
this.score1=score1;
this.score2=score2;
this.score3=score3;
this.score4=score4;
}
public float Average(){
return
(score1*credit1+score2*credit2+score3*credit3+score4*credit4)/(credit1+credit2+credit3+cr edit4);
}
public String toString(){
float average=this.Average();
return(name+""+number+""+sex+""+age+" "+score1+""+score2+""+score3+""+score4+""+average);
}
public int Fail(){
int i=0;
if(score1<60)
i++;
if(score2<60)
i++;
if(score3<60)
i++;
if(score4<60)
i++;
return i;
}
}
public class Experiment7_3{
public static void main(String arg[]){
String high,good,bad,report;
Student[]student=new Student[6];
student[0]=new Student("ningning","20132610001","男",19,98,78,91,93);
student[1]=new Student("qiqi","20132610002","女",19,96,82,89,86);
student[2]=new Student("yongge","20132610004","男
",21,63,59,69,51);
student[3]=new Student("huizhang","20132610003","男",20,78,73,69,83);
student[4]=new Student("xiaobo","20132610006","男",19,89,76,91,92);
student[5]=new Student("xiaofeng","20132610005","男",20,86,82,91,79);
high=student[0].toString();
for(int i=0;i<=2;i++){
if(student[i+1].age>student[i].age)
high=student[i+1].toString();
}
System.out.println("年龄最大的同学是");
System.out.println(high);
good=student[0].toString();
for(int i=0;i<=4;i++){
float a1=student[i+1].Average();
float a2=student[i].Average();
if(a1>a2)
good=student[i+1].toString();
}
System.out.println("成绩最好的同学是");
System.out.println(good);
bad=student[0].toString();
for(int i=0;i<=4;i++){
float a1=student[i+1].Average();
float a2=student[i].Average();
if(a1<a2)
bad=student[i+1].toString();
}
System.out.println("成绩最差的同学是");
System.out.println(bad);
System.out.println("有两科以上不及格的同学是");
for(int i=0;i<=5;i++){
int a;
a=student[i].Fail();
if(a>=2)
System.out.println(student[i].name);
}
Student temp=new Student();
for(int i=0;i<=4;i++){
for(int j=0;j<=4-j;j++){
float a1=student[j].Average();
float a2=student[j+1].Average();
if(a1<a2){
temp.Student(student[j].name,student[j].number,student[j]. sex,student[j].age,student[j].score1,student[j].score2,student[j].score3,student[j].score4);
student[j].Student(student[j+1].name,student[j+1].number,s tudent[j+1].sex,student[j+1].age,student[j+1].score1,student[j+1].score2,student[j+1].score3, student[j+1].score4);
student[j+1].Student(,temp.number,temp.sex,tem p.age,temp.score1,temp.score2,temp.score3,temp.score4);
}
}
}
System.out.println("
成绩单");
for(int i=0;i<=5;i++){
report=student[i].toString();
System.out.println(report);
}
}
}
实验八
1,定义一个公司员工类,包含员工的员工号,姓名,性别,年龄,工资金额等字段,其中规定姓名不能为空,工资金额不低于当地最低工资600元,员工
号从1000到5999,并给出将员工所有信息打印出来的toString()方法。
import java.util.Scanner;
class Employee{
int number,age,salary;
String name,sex;
public void SetName(String name){
if(name!=null)
=name;
}
public void SetNumber(int number){
if(number>=1000&&number<=5999)
this.number=number;
}
public void SetSex(String sex){
this.sex=sex;
}
public void SetAge(int age){
this.age=age;
}
public void SetSalary(int salary){
if(salary>=600)
this.salary=salary;
}
public String toString(){
return name+""+number+""+sex+""+age+"
"+salary;
}
}
2请编程实现动物世界的继承关系。
动物(Animal)具有行为:吃(eat)、睡觉(sleep);
动物包括:兔子(rabbit)、老虎(tiger);这些动物吃的行为各不相同(兔子吃草、老虎吃肉),但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest 进行测试。
class Animal{
public void Eat(){
}
public void Sleep(){
System.out.println("sleep");
}
}
class rabbit extends Animal{
public void a(){
System.out.println("rabbit");
}
public void Eat(){
System.out.println("eat cao");
}
}
class tiger extends Animal{
public void a(){
System.out.println("tiger");
}
public void Eat(){
System.out.println("eat rou");
}
}
public class Experiment8_2{
public static void main(String arg[]){
rabbit ra=new rabbit();
tiger ti=new tiger();
3定义一个复数(z=x+iy)类Complex,包含:
两个属性:实部x和虚部y
默认构造函数Complex(),设置x=0,y=0
构造函数:Complex(int i,int j)
求两个复数的和:public static Complex addComp(Complex C1,Complex C2)
求两个复数的差:public static Complex subComp(Complex C1,Complex C2)
显示复数内容的方法toString
添加不定长参数的加法和减法的方法
import java.util.Scanner;
class Complex{
float x,y;
Complex(){
x=0;
y=0;
}
Complex(int i,int j){
this.x=i;
this.y=j;
}
public String addComp(Complex C1,Complex C2){
Complex C3=new Complex();
C3.x=C1.x+C2.x;
C3.y=C1.y+C2.y;
return C3.x+"+"+C3.y+"i";
}
public String subComp(Complex C1,Complex C2){
Complex C3=new Complex();
C3.x=C1.x-C2.x;
C3.y=C1.y-C2.y;
return C3.x+"-"+C3.y+"i";
}
}
public class Experiment8_3{
public static void main(String arg[]){
Scanner reader=new Scanner(System.in);
Complex c1=new Complex(reader.nextInt(),reader.nextInt());
Complex c2=new Complex(reader.nextInt(),reader.nextInt());
Complex c3=new Complex();
String c=c3.addComp(c1,c2);
System.out.println(c);
}
}
实验九
1创建一个职工类(Employee),公司的职工分为销售员(CommissionWorker)、计件工(PieceworkWorker)和小时工
(HourlyWorker)。
销售员的收入是基本工资加上销售额的5%;计件工
类的收入取决他生产的工件数量;小时工的收入以小时计算,若超过40小
时部分的报酬是平时的1.5倍。
在测试类中为每一个类建立一个实例,放于
数组中,依次打印其工资。
class Employee{
int base=2000,salary;
}
class CommissionWorker extends Employee{
int sale;
CommissionWorker(){}
CommissionWorker(int sale){
this.sale=sale;
salary=(int)(base+sale*0.05);
}
}
class PieceworkWorker extends Employee{
int num;
PieceworkWorker(int num){
salary=num*100;
}
}
class HourlyWorker extends Employee{
int hour;
HourlyWorker(int hour){
this.hour=hour;
if(hour<=40)
salary=hour*30;
else
salary=hour*30+(hour-40)*10;
}
}
public class Experiment9_1{
public static void main(String args[]){
Employee[]e=new Employee[3];
e[0]=new CommissionWorker(8000);
e[1]=new CommissionWorker(60);
e[2]=new CommissionWorker(120);
for(int i=0;i<3;i++){
System.out.println("工资为"+e[i].salary);
}
}
}
2创建一个学生类(Student),记录了学生的姓名、学号、所学科目数(不可修改)、各科成绩;可以获取学生的学号,但不能修改;可以获取和修改
姓名;可输入和读取成绩;可以获得学生的平均成绩
学校的学生分两类:本科生(Undergraduate)和研究生(Graduate)。
本科生平均分在60分以上可以获得学位,而研究生平均分在70分以上才可以
获得学位。
请通过继承实现以上需求,并编写测试类StudentTest进行测试,
判断学生是否可以获得学位
public class Experiment9_2{
public static void main(String args[]){
Undergraduate11s1=new Undergraduate11();
Graduate s2=new Graduate();
s1.Student("luozi","20132615937",56,49);
s2.Student("huizhang","20132613739",89,73);
s1.Average();
s2.Average();
System.out.println("大学生1");
s1.Undergraduate11();
System.out.println("研究生2");
s2.Graduate();
}
class Student{
String name,number;
final static String subject1="math",subject2="physics";
int score1,score2,average;
Student(){}
Student(String name,String number,int score1,int score2){
=name;
this.number=number;
this.score1=score1;
this.score2=score2;
}
public String getNumber(String name){
=name;
return number;
}
public void setName(String name){
=name;
}
public String setScore(int socre1,int score2,int score1){ this.score1=score1;
this.score2=score2;
return(name+""+subject1+""+score1+""+subject2+""+score2);
}
public float Average(){
average=(score1+score2)/2;
return average;
}
}
class Undergraduate11extends Student{
Undergraduate11(){
if(average>=60)
System.out.println("可以毕业");
else
System.out.println("不能毕业");
}
public Undergraduate11(){
//TODO Auto-generated method stub
}
public Undergraduate1(){
//TODO Auto-generated method stub
}
public Undergraduate(){
//TODO Auto-generated method stub
}
public void Student(String string,String string2,int i,int j){ //TODO Auto-generated method stub
}
}
class Graduate extends Student{
Graduate(){
if(average>=70)
System.out.println("可以毕业");
else
System.out.println("不能毕业");
}
public void Graduate(){
//TODO Auto-generated method stub
}
public Graduate1(){
//TODO Auto-generated method stub
}
public void Student(String string,String string2,int i,int j){ //TODO Auto-generated method stub
}
}
}
3声明一个接口ICDPlayer,包含四个接口方法:Play()、Stop()、NextTrack()、PreviousTrack(),以及一个只读属性CurrentTrack。
创建类CDPlayer,实现该接口,模拟CD的播放、停止、下音轨、上一音轨的操作。
public class Experiment9_3implements ICDPlayer{
public void play(){}
public void stop(){}
public void nextTrack(){}
public void previousTrack(){}
}
interface ICDPlayer{
int currentTrack=1;
void play();
void stop();
void nextTrack();
void previousTrack();
}
实验十
1请编程实现如下需求:乐器(Instrument)分为:钢琴(piano)、小提琴(violin)、大提琴(cello),三种乐器的弹奏(play)方法各不相同。
编写一个测试类
InstrumentTest,要求编写方法testPlay,对这三种乐器进行弹奏测试(不
要用控制语句)。
要依据乐器的不同,进行相应的弹奏测试,在main()方法
中进行测试。
abstract class Instrument{
public abstract void play();
}
class Piano extends Instrument{
public void play(){
System.out.println("演奏钢琴");
}
}
class Violin extends Instrument{
public void play(){
System.out.println("演奏小提琴");
}
}
class Cello extends Instrument{
public void play(){
System.out.println("演奏大提琴");
}
}
public class Experiment10_1{
public static void main(String args[]){
Instrument a=new Piano();
a.play();
Instrument b=new Violin();
b.play();
Instrument c=new Cello();
c.play();
}
}
2为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。
现有两种工具:Car和Plane,其中Car的速度运算公式为:A*B/C,Plane
的速度运算公式为:A+B+C。
要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序
abstract class TrafficTool{
float A=1,B=2,C=3;
public abstract String speed();
}
class Car extends TrafficTool{
public String speed(){
return"car需要的时间是"+1000*C/(A*B);
}
}
class Plane extends TrafficTool{
public String speed(){
return"plane需要的时间是"+1000/(A+B+C);
}
}
public class Experiment10_2{
public static void main(String arg[]){
TrafficTool car=new Car();
String a=car.speed();
System.out.println(a);
TrafficTool plane=new Plane();
String b=plane.speed();
System.out.println(b);
}
}
实验十一
1定义一个乐器(Instrument)接口,其中有抽象方法:void play()。
在InstrumentTest类中,定义一个方法:
void playInstrument(Instrument ins)
并在该类的main方法中调用该方法。
要求:分别使用下列内部类完成此题
⏹成员内部类
⏹局部内部类
⏹匿名类
interface Instrument{
void play();
}
class InstrumentTest{
public void playInstrument(Instrument ins){
ins.play();
}
}
class InstrumentImpl implements Instrument{
@Override
public void play(){
System.out.println("成员内部类");
}
}
public class Experiment11_1{
public static void main(String[]agrs){
InstrumentTest instrument=new InstrumentTest();
instrument.playInstrument(new InstrumentImpl());
class InstrumentImpl2implements Instrument{
@Override
public void play(){
System.out.println("局部内部类");
}
}。