By光绪
一、实验目的和要求
1.掌握JDK的安装、环境配置和使用;掌握JBuilder或Eclips的安装和使用。使用JDK、JBuilder或Eclips编辑、编译和运行Java程序。
2.掌握Java的语言基础。
3.掌握简单语句、标准输入输出和选择语句的编程。
二、实验内容
1.JDK 开发环境的安装配置实践
在 Windows 下,直接运行下载的 j2sdk1.4.2.exe 文件,根据安装向导安装到一个目录,例如安装到 C:\j2sdk1.4.2。
设置环境变量:如果操作系统是 Win 98/Me,可以用记事本直接编辑 Autoexec.bat,添加下面命令行:
PATH=%PATH%.c:\j2sdk1.4.2\bin
SET JAVA_HOME=c:\j2sdk1.4.2
SET CLASSPATH=..c:\j2sdk1.4.2\lib\tools.jar.c:\j2sdk1.4.2\lib\dt.jar
保存后重新启动计算机,这样所添加的环境变量才会有效。
如果操作系统是Win2000 或 xp,按如下方式配置环境变量:
右键单击"我的电脑",在弹出菜单中选择"属性"→"系统特性" →"高级" →"环境变量", 弹出环境变量对话框,就可以编辑系统的环境变量了。添加 PATH、JAVA_HOME 和 CLASSPATH 三个变量,变量值同上。
最后编写并运行一个Java 程序,使其输出:“Java 你好!”
2.JBuilder或Eclips的安装使用实践
在计算机上安装JBuilder或Eclips,然后编写并运行一个Java 程序,使其输出:“Java 你好!”
3.熟悉Java工程结构、Java程序结构及上机运行过程
1)编写一个最简单的Java程序,只输出一句话“Java 你好!”。
要求:类名为MyJava1, 公共类(即类名前有public修饰)。程序运行通过后打开工程文件夹,观察文件夹的结构,其中的文件及其文件名称。
2)在内容窗口中修改上面程序中的类名,观察有什么反映,想一想是什么原因?
3)在内容窗口中对1)的程序进行如下修改:
将类名前的public修饰符去掉,观察有什么反映,想一想是什么原因?
4)在1)的程序最后再加一个公共类:
public class MyJava2 { }
观察有什么反映,想一想是什么原因?
5)在1)的程序中再加一个非公共类:
class MyJava2 { }
观察程序能运行否。
public class Myjava1
{
public static void main(String args[])
{
System.out.println("java,你好!");
}
}
4.熟悉标准输出语句
编写一个程序,在主方法中写入如下语句:
System.out.println(1+2.3);
System.out.println("abc"+"def");
System.out.println("ab"+1);
System.out.println("abc"+1+2.3);
System.out.println(1+2.3+"abc");
System.out.println(1+"abc" +2.3);
观察运行结果,想一想为什么有这样的结果。
5.分析下面的程序,它有什么错误,应如何改正?再将程序输入机器,看有什么错误,改正(仅修改初值)后运行它,观察输出的值,理解基本数据类型及基本数据类型常值的表示。
public class Test
{ public static void main(String args[])
{ byte b=0x55;
short s=0400;
int i=100000;
long l=0xff;
char c1="A";
char c2=65;
float f=.25;
double d=.00001234;
boolean bool=true;
System.out.println("byte b="+b);
System.out.println("short s="+s);
System.out.println("int i="+i);
System.out.println("long l="+l);
System.out.println("char c1="+c1);
System.out.println("char c2="+c2);
System.out.println("float f="+f);
System.out.println("double d="+d);
System.out.println("boolean bool="+bool);
}}
6.编写一程序,运行后从键盘输入三个整数,输出其中的最大数。(if语句)
import java.util.Scanner;
public class Test16{
public static void main(String args[])
{
System.out.println("请输入三个数:");
double a,b,c;
Scanner scan=new Scanner(System.in);
a=scan.nextInt();
b=scan.nextInt();
c=scan.nextInt();
if(a>b) {a=a;}
else{a=b;}
if(a>c) {a=a;}
else{a=c;}
System.out.println("最大的数字是:"+a);
}
}
7.编写一程序,将从键盘输入的一个百分制考试成绩转化为五分制输出。百分制与五分制的对应如下: (switch语句)
100~90 — A, 89~80 — B, 79~70 — C, 69~60 — D, <60 — E
import java.util.Scanner;
public class Test17
{
public static void main(String args[])
{
System.out.println("请输入成绩:");
Scanner scan=new Scanner(System.in);
int grade=scan.nextInt();
switch(grade/10)
{
case 10:{System.out.println("A"); break;}
case 9:
{System.out.println("A"); break;}
case 8:{System.out.println("B"); break;}
case 7:{System.out.println("C"); break;}
case 6:{System.out.println("D"); break;}
default:{System.out.println("E"); break;}
}
}
}
一、实验目的和要求
掌握Java流程控制语句、Math类、数组的编程方法。
要求至少完成实验内容题的70%。
二、实验内容
1.打印一个三角形的1~9的乘法表。
public class Test21{
public static void main(String args[])
{
System.out.print("*"+" ");
for(int k=1;k<10;k++)
{System.out.print(k+" ");}
System.out.print("\n");
for(int i=1;i<10;i++)
{ System.out.print(i+" ");
for(int j=1;j<10;j++)
{ if(j<=i){System.out.print(i*j+" "); }
}
System.out.print("\n");
}
}
}
2.编写一程序,将从键盘输入的每个月份数(整数)显示出其对应的英文,直至输入0结束,注意对非法数据的处理。 (while,switch语句)
import java.util.Scanner;
public class Test22{
public static void main(String agrs[])
{
Scanner scan=new Scanner(System.in);
System.out.println("请输入月份数(整数):");
int month;
int i=1;
while(i<=12)
{
i++;
month=scan.nextInt();
switch(month)
{
case 12:System.out.println("December!");break;
case 11:System.out.println("November!");break;
case 10:System.out.println("October!");break;
case 9:System.out.println("September!");break;
case 8:System.out.println("August!");break;
case 7:System.out.println("July!");break;
case 6:System.out.println("June!");break;
case 5:System.out.println("May!");break;
case 4:System.out.println("April!");break;
case 3:System.out.println("March!");break;
case 2:System.out.println("February!");break;
case 1:System.out.println("January!");break;
default:System.out.println("请输入合法数据!");
}
};
}
}
3.打印图案:一个由n行星花组成的三角形。如n=5时的图案为:
public class Test23{
public static void main(String args[])
{
for(int i=0;i<=5;i++)
{
for(int k=5;k>i;k--)
{
System.out.print(" ");
}
for(int j=0;j<i;j++)
{
System.out.print("*"+" ");
}
System.out.print("\n ");
}
}
}
4.打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33。
import java.util.Scanner;
public class Test{
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num=scan.nextInt();
int i=0,sum=0,a=num;
while(((num*10)/10)!=0)
{
i=num%10;
num=(num-i)/10;
sum=sum+(i*i*i);
}
if(a==sum){
System.out.println(a+"是水仙花数");
}
else
{
System.out.println(a+"不是水仙花数");
}
}
}
5.编写一个程序,从键盘读一个年份的数字,然后判断该年是否是闰年,如果是就输出“闰年”,如果不是就输出“非闰年”。
闰年的条件是满足以下两个条件之一:
1)能被4整除,但不能被100整除;
2)能被4整除,又能被400整除。
import java.util.Scanner;
public class Test{
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scan.nextInt();
if(((year%4==0)&&(year%100!=0))||((year%4==0)&&(year%400==0)))
{
System.out.println(year+"是闰年!");
}
else
{
System.out.println(year+"不是闰年!");
}
}
}
6.统计个位数是6,并且能被3整除的五位数共有多少个
public class Test{
public static void main(String args[])
{
int sum=0;int test=0;int i=0;
for(int k=10000;k<100000;k++)
{
int num=k;
while(((num*10)/10)!=0)
{
i=num%10;
num=(num-i)/10;
test=i+test;
}
if(((i%10)==6)&&(test%3==0))
{
sum++;
test=0;
}
}
System.out.println("个位数是6,并且能被3整除的五位数共有"+sum+"个")
}
}
。
7.编写一个程序,在其中建立一个有10个整数的数组,运行后从键盘输入10个数,然后输出其中的最小数。
import java.util.Scanner;
public class Test{
public static void main(String args[])
{
int a[]=new int[10];
int i=0;
Scanner scan=new Scanner(System.in);
for( i=0;i<10;i++)
{
a[i]=scan.nextInt();
}
for( i=0;i<9;i++)
{
if(a[i]<a[i+1])
{
a[i+1]=a[i];
}
}
System.out.println(a[i]);
}
}
8.编写一个程序,在其中建立一个有10个整数的数组,运行后从键盘输入10个数,然后排序(升序)后输出。
import java.util.Scanner;
public class Test28
{
public static void main(String args[])
{
int i,j,t,n=10;
int a[]=new int[10];
Scanner scan=new Scanner(System.in);
System.out.println("请输入10个数字:");
for(i=0;i<10;i++)
{
a[i]=scan.nextInt();
}
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
System.out.println("排序后的序列:");
for(i=0;i<10;i++)
{
System.out.print(a[i]+" ");
}
}
}
9.编写一个程序,找出5行5列整数矩阵中的最小元素,矩阵元素由键盘输入。
import java.util.Scanner;
public class Test28
{
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
int a[][]=new int[5][5];
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
a[i][j]=scan.nextInt();
}
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
if(a[i][j]<a[i][j+1])
a[i][j+1]=a[i][j];
}
for(i=0;i<4;i++)
{
if(a[i][4]<a[i+1][4])
{a[i+1][4]=a[i][4];}
}
System.out.println("最小的数字是:"+a[4][4]);
}
}
10.编写一个程序,计算出5行5列整数矩阵的每行之和。
import java.util.Scanner;
public class Test28
{
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
int a[][]=new int[5][5];
int b[]={0,0,0,0,0};
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
a[i][j]=scan.nextInt();
}
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
b[i]+=a[i][j];
}
System.out.println("每行的和是:");
for(i=0;i<5;i++)
{
System.out.print(b[i]+" ");
}
}
}
11.编写一个程序,在其中定义一个6´6的二维整型数组, 利用随机函数产生36个10~20之间的随机整数放入,然后将数组输出到屏幕上(6行6列格式)。最后计算出数组中对角线元素的平方根和。
public class Test28
{
public static void main(String args[])
{
int a[][]=new int[6][6];
int i,j;
double sum=0;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{
a[i][j]=(int)(10+Math.random()*(20-10+1));
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
System.out.print(a[i][j]+" ");
if(i==j)
{
sum+=Math.sqrt(a[i][j]);
}
}
System.out.print("\n");
}
System.out.println("对角线平方根的和是:"+sum);
}
}
一、实验目的和要求
掌握类、对象、方法、继承、接口的编程技术;
要求至少完成实验内容题的70%。
二、实验内容
1.编一程序,求两个正整数m、n的最大公约数。
要求程序中有两个方法,分别使用循环和递归求最大公约数,最后在主方法中分别调用这两个方法求解56与91的最大公约数。
提示:用辗转相除法。
方法:(1) 求m除n的余数r;
(2) 如果r为0,则n为最大公约数,结束。否则转(3);
(3) 用n置m,用r置n ,回到(1)。
import java.util.Scanner;
public class Test
{
public static int test1(int m,int n)
{
for(int r=m%n;;)
{
r=m%n;
if(r==0)
{
return n;
}
else
{
m=n;
n=r;
}
}
}
public static int test2(int m,int n)
{
if(m%n==0)
return n;
else
return test2(n,m%n);
}
public static void main(String args[])
{
Scanner scan =new Scanner(System.in);
System.out.println("请输入两个正整数:");
int x=scan.nextInt();
int y=scan.nextInt();
System.out.println("循环方法:"+x+","+y+"的最大公约数是:"+test1(x,y));
System.out.println("递归方法:"+x+","+y+"的最大公约数是:"+test2(x,y));
}
}
2.编写一个完整的Java Application程序,其中设计一个复数类Complex,利用它验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。复数类Complex的设计必须满足如下要求:
1)Complex 的属性有:
realPart:int型,代表复数的实数部分;
maginPart:int型,代表复数的虚数部分。
2)Complex 的方法有:
Complex():构造方法,将复数的实部和虚部都置0;
Complex(int r , int i ):构造方法,形参 r 为实部的初值,i为虚部的初值。
3)Complex complexAdd(Complex a):将当前复数对象与形参复数对象相加,最后的结果仍是一个复数对象,返回给此方法的调用者。
4)String toString(): 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。
class Complex
{
private int realPart;
private int maginPart;
public Complex(int r,int i)//有参的构造函数
{
realPart=r;
maginPart=i;
}
public Complex()//无参的构造函数
{
realPart=0;
maginPart=0;
}
public void complexAdd(Complex a)
{
this.realPart+=a.realPart;
this.maginPart+=a.maginPart;
}
public String toString()
{
return (realPart+"+"+maginPart+"i");
}
}
public class Test
{
public static void main(String args[])
{
Complex a=new Complex(1,3);
Complex b=new Complex(3,4);
System.out.print(a.toString()+"+"+b.toString()+"=");
a.complexAdd(b);
System.out.println(a.toString());
}
}
3.编写一个包含圆类的程序,并为圆类设计几个构造方法和一般方法,在主方法中创建一个圆类对象并输出它的周长和面积。
要求:
属性有3个:x,y,r,分别放置圆心坐标和半径;
构造方法有2个。一个是无参的,用于设置3个属性的值都为0;另一个有参的,用于设置3个属性的值,以确定一个具体的圆。
计算周长的方法:double zc();
计算面积的方法:double mj()。
import java.util.Scanner;
class Circle
{
private double x;
private double y;
private double r;
static double PI=3.1415926;
public Circle(double X,double Y,double R)//有参的构造函数
{
x=X;y=Y;r=R;
}
public Circle()//无参的构造函数
{
x=0;y=0;r=0;
}
public double zc()
{
return 2*PI*r;
}
public double mj()
{
return PI*r*r;
}
}
public class Test
{
public static void main(String args[])
{
Circle c=new Circle(1,1,4);
System.out.println("圆的周长:"+c.zc()+",面积"+c.mj());
}
}
4.编写一个程序,它含有一个圆类、圆柱类和主类。
要求:
1)圆类参考上一题中的圆类;
2)圆柱类:继承圆类,并加入一个属性h(高);
构造方法(给4个属性赋值);
计算面积的方法(double mj());
计算体积的方法(double tj())。
注意,要充分利用父类的方法。
3)主类:在主方法中创建圆和圆柱类的对象,然后计算并输出它们的面积及圆柱的体积。
import java.util.Scanner;
class Circle
{
public double x;
public double y;
public double r;
static double PI=3.1415926;
public Circle(double X,double Y,double R)//有参的构造函数
{
x=X;y=Y;r=R;
}
public Circle()//无参的构造函数
{
x=0;y=0;r=0;
}
public double zc()
{
return 2*PI*r;
}
public double mj()
{
return PI*r*r;
}
}
class Cylinder extends Circle
{
public double h;
public Cylinder(int X,int Y,int R,int H)
{
x=X;y=Y;r=R;h=H;
}
public double tj()
{
return h*PI*r*r;
}
public double mj()
{
return 2*PI*r*r+r*h;
}
}
public class Test
{
public static void main(String args[])
{
Circle c=new Circle(1,1,4);
Cylinder z=new Cylinder(1,1,4,6);
System.out.println("圆的周长:"+c.zc()+",面积"+c.mj());
System.out.println("圆柱的面积:"+z.mj()+",体积"+z.tj());
}
}
5.编写一个含有5个类的程序:
类Person:
属性:编号、姓名、性别;
构造方法:确定编号和姓名;
一般方法:修改编号、姓名,获取编号、姓名。
类Teacher:继承类Person并增加:
属性:系别;
构造方法:调用父类的构造方法;
一般方法:修改、获取系别。
类Student:继承类Person并增加:
属性:班级;
构造方法:调用父类的构造方法;
一般方法:修改、获取班级属性值。
类Classes:
属性:班级名称,学生名单(Student类对象的数组);
构造方法:确定班级名称;
一般方法:建立学生名单,输出学生名单。
类Main:
主类。主方法中创建一个班级,然后建立该班级的学生名单,最后
输出学生名单。
import java.util.Scanner;
class Person
{
public int id;
public String name;
public String sex;
public Person(int ID,String Name)
{
id=ID;name=Name;
}
public void setPerson(int ID,String Name)
{
id=ID;name=Name;
}
public int getPersonID()
{
return id;
}
public String getPersonName()
{
return name;
}
}
class Teacher extends Person
{
String type;
public Teacher(int ID,String Name){super(ID,Name);}
public void setType(String Type)
{
type=Type;
}
public String getTeacherType()
{
return type;
}
}
class Student extends Person
{
String classname;
public Student(int ID,String Name){super(ID,Name);}
public void setClassName(String ClassName)
{
classname=ClassName;
}
public String getClassName()
{
return classname;
}
}
class Classes
{
String classesname;int num=0;
Student studentnames[]=new Student[10];
Classes (String ClassesName){classesname=ClassesName;}
void settable()
{
System.out.println("请输入学生人数:");
Scanner scan=new Scanner(System.in);
num=scan.nextInt();
for(int i=0;i<num;i++)
{
System.out.println("请输入第"+(i+1)+"个学生的学号和姓名:");
studentnames[i]=new Student(scan.nextInt(),scan.next());
}
}
void gettable()
{
System.out.println("班级名称:"+classesname);
System.out.println("学号 姓名");
for(int i=0;i<num;i++)
{
System.out.println(studentnames[i].id+" "+studentnames[i].name);
}
}
}
public class Test
{
public static void main(String args[])
{
Classes c=new Classes("计科一班");
c.settable();
c.gettable();
}
}
6.请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。(重点理解:抽象类、抽象方法、(匿名)内部类、匿名对象)
abstract class A{abstract String getS();}
class Test
{ public static void main(String args[]){
System.out.println(new A(){ String getS(){ return "抽象?匿名?";}}.getS());
}
}
输出结果:抽象?匿名?
7.请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。
(重点理解:接口、接口实现方法、(匿名)内部类、匿名对象)
interface I{ String getS(); }
class Test
{ public static void main(String args[]){
System.out.println(new I(){ public String getS()
{ return "接口和内部类!";}}.getS());
}
}
输出:接口和内部类!
(请比较本程序与上题程序的不同之处)
一、实验目的和要求
掌握Java语言基础与面向对象的综合编程技术与方法,更全面深入地理解面向对象程序设计技术内涵。
本实验由学生自由选做,课后完成。
二、实验内容
1.请先阅读下面的程序,确定它的输出结果。再将程序上机运行,验证自己分析的输出结果是否正确。
class Yuan
{ int r; String name; static int z= 5;
Yuan(int r){ this.r=r; }
int a(){ return z*r*r; }
int p(){ return 5*z*r; }
void value (){ name="china"; }
}
class testOverride extends Yuan
{ int h; String name;
testOverride(int r,int h1) { super(r); h=h1; }
int a(){ value(); return 2*super.a()+p()*h; }
void value()
{ super.value();
name="America";
System.out.println("\""+this.name+"\"");
System.out.println(super.name);
}
public static void main(String args[])
{ Yuan y= new Yuan(4);
Yuan yz= new testOverride(5,2);
System.out.println(y.a());
System.out.println(yz.p());
System.out.println(yz.a());
}
}
输出:80\125\”American”\china\500
2.请先阅读下面的程序,确定它的输出结果。再将程序上机运行,验证自己分析的输出结果是否正确。
public class TestTransOfValue
{public static void main(String args[])
{ double val;
StringBuffer sb1, sb2;
String sb3;
char s[]={'a','p','p','l','e'};
val = 5.8;
sb1 = new StringBuffer("apples");
sb2=new StringBuffer("pears");
sb3 = new String("pear");
modify(val, sb1, sb2,sb3,s);
System.out.println(val);
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb3);
System.out.println(s);
}
public static void modify(double a, StringBuffer r1,
StringBuffer r2,String r3,char s[] )
{ a = 6.8;
r1.append(" taste good");
r2=null;
r3="banana";
s[2]='R'; }
}
5.8
apples taste good
pears
pear
apRle
Press any key to continue...
3.编写一个程序,其中设计一个矩阵类Matrix,最后计算:
要求Matrix类满足:
1)Matrix的属性有:
m,n:int型,矩阵的行、列数;
ma:int型两维数组,放置矩阵的数据。
2)Matrix的方法有:
Matrix (int m , int n ):构造方法,设置矩阵的行数和列数;
cheng(Matrix a):将当前矩阵与形参矩阵相乘,最后返回乘的结果(Matrix对象); void print():输出矩阵。
import java.util.Scanner;
class Matrix {
public double[][] create() {
Scanner sc = new Scanner(System.in) ;
System.out.print("请输入矩阵的行高:");
int a = sc.nextInt() ;
System.out.print("请输入矩阵的列宽:");
int b = sc.nextInt() ;
double[][] x = new double[a][b] ;
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.print("请输入元素x["+i+"]["+j+"]的值:" );
x[i][j] = sc.nextDouble() ;
}
}
return x ;
}
public double[][] multiply(double[][] x,double[][] y){
double[][] result = null ;
int a = x[0].length ;
int b = y.length ;
if(a != b){
System.out.println("输入的维数不匹配,不能进行运算");
}else{
int c = x.length ;
int d = y[0].length ;
result = new double[c][d] ;
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
double sum = 0 ;
for(int k=0;k<a;k++){
sum += x[i][k]*y[k][j] ;
}
result[i][j] = sum ;
}
}
}
return result ;
}
public void print(double[][] x){
System.out.println("相乘后的矩阵为:");
for(int i=0;i<x.length;i++){
for(int j=0;j<x[i].length;j++){
System.out.print(x[i][j] + " ") ;
}
System.out.println();
}
}
}
public class Test{
public static void main(String[] args) {
Matrix m = new Matrix() ;
System.out.println("创建第一个数组:") ;
double[][] x = m.create() ;
m.print(x) ;
System.out.println("创建第二个数组:");
double[][] y = m.create() ;
m.print(y) ;
double[][] result = m.multiply(x, y) ;
if(result == null){
return ;
}
m.print(result) ;
}
}
4.请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。(注意重点理解:内部类、对象内部类、静态内部类)
public class Outer
{ public Outer(){System.out.println("OuterClass Object!");}
private class Inner1
{ private Inner1(String s){ System.out.println(s);} }
static class Inner2
{ Inner2(String s){ System.out.println(s);} }
public static void main(String[] args)
{ Outer ob= new T();
Outer.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");
Inner2 ib2=new Inner2("InnerClass2 Object!");
}
}
OuterClass Object!
InnerClass1 Object!
InnerClass2 Object!
Press any key to continue...
请再尝试将:
Outer.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");
改为:
ob.Inner1 ib1 = ob.new Inner1("InnerClass1 Object!");
看有什么变化。编译错误ob包不存在
5.请仔细阅读下面的程序,分析程序的结构和输出结果。由此理解接口、抽象类、继承、实现接口,进一步理解多态。
interface Food
{ public void doEat();} // doEat()是吃食物的方法
abstract class Fruit{} //水果抽象类
abstract class Meat{ } //肉抽象类
class Apple extends Fruit implements Food//苹果类
{ public void doEat()
{ System.out.println("我是苹果,属于水果类,你不必烹饪我就可吃!"); }
}
class Beef extends Meat implements Food //牛肉类
{ public void doEat()
{System.out.println("我是牛肉,属于肉类,必须烹饪后才可吃!"); }
}
public class Use
{ public static void main(String args[])
{ Food f=new Apple();
f.doEat();
f=new Beef();
f.doEat(); // 两个“f.doEat()”体现了多态
}
}
我是苹果,属于水果类,你不必烹饪我就可吃!
我是牛肉,属于肉类,必须烹饪后才可吃!
Press any key to continue...
试一试将主方法改为:
public static void main(String args[])
{ Food f=new Apple(); f.doEat(); }
观察系统有何反应?
我是苹果,属于水果类,你不必烹饪我就可吃!
Press any key to continue...
再在Fruit类中加入方法“abstract void doEat();” ,看结果怎样,你能得出什么结论?
错误
6.设计一个程序,其中含有一个接口Shape(形状),其中有求形状的面积的方法area()。再定义三个实现接口的类:三角型类、矩形类和圆类。在主方法中创建Shape类型的一维数组,它有三个元素,放置三个对象,分别表示三角形、矩形和圆,然后利用循环输出三个图形的面积。
( 注:三角形面积s=Math.sqrt(p*(p-a)*(p-b)*(p-c)),a,b,c为三条边,p=(a+b+c)/2 )
interface Shape{
public double area();
}
class triangle implements Shape{
int a,b,c;
public triangle(int A,int B,int C){a=A;b=B;c=C;}
public double area(){int p=p=(a+b+c)/2 ;return Math.sqrt(p*(p-a)*(p-b)*(p-c));}
}
class rectangle implements Shape{
int a,b;
public rectangle(int A,int B){a=A;b=B;}
public double area(){return a*b;}
}
class circle implements Shape{
int r;
public circle(int R){r=R;}
public double area(){return 3.14*r*r;}
}
public class Test
{
public static void main(String args[])
{
Shape s[]=new Shape[3];
s[0]=new triangle(3,4,5);
s[1]=new rectangle(3,4);
s[2]=new circle(3);
System.out.println("三角形的面积是:"+(s[0].area())+";长方形的面积:"+(s[1].area())+";圆的面积:"+(s[2].area()));
}
}
惠州学院计算机科学系网络工程专业SoftwareEngineeringLaboratoryDeptofComputerScienc…
实验一Application与Applet程序调试运行实验目的熟悉所用系统的上机方法与步骤实验内容编写一个JavaApplicat…
网络编程技术大作业修改履历目录1文档概述...41.1文档目的和范围...41.2术语/缩略语...41.3参考文档...52系统…
Java网络编程实践(基于C/S的控制台聊天室)课程设计说明书课程名称:Java网络课程实践题目:基于C/S的控制台聊天室姓名:*…
网络编程技术实验报告一实验目的网络编程技术是计算机科学与技术专业网络工程专业软件工程专业的一门专业基础课程本课程以Java技术为主…
网络编程技术实验报告一实验目的网络编程技术是计算机科学与技术专业网络工程专业软件工程专业的一门专业基础课程本课程以Java技术为主…
网络编程技术大作业修改履历目录1文档概述...41.1文档目的和范围...41.2术语/缩略语...41.3参考文档...52系统…
辽宁科技大学装备制造学院计算机网络课程设计报告题目网络聊天室的设计与实现院系装备制造学院专业计算机科学与技术班级二班姓名