java c 实验答案_《Java语言》上机实验(第一次)答案

《Java语言》

上机实验(第一次)答案

实验一Java环境演练

【目的】

①安装并配置Java运行开发环境;

②掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;

③掌握开发Java Applet程序的3个步骤:编写源文件、编译源文件和运行Java Applet程序;

④学习同时编译多个Java源文件。

【内容】

1.一个简单的应用程序

²实验要求:

编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

Hello.java

public class Hello

{

public static void main (String args[ ])

{

System.out.println("你好,很高兴学习Java");

A a=new A();

a.fA();

}

}

class A

{

void fA()

{

System.out.println("We are students");

}

}

²实验后的练习:

1.编译器怎样提示丢失大括号的错误?

2.编译器怎样提示语句丢失分号的错误?

3.编译器怎样提示将System写成system这一错误?

4.编译器怎样提示将String写成string这一错误?

2.一个简单的Java Applet程序

²实验要求:

编写一个简单的Java Applet程序,并在Java Applet中写两行文字:“这是一个Java Applet程序”和“我改变了字体”。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

FirstApplet.java

import java.applet.*;

import java.awt.*;

public class FirstApplet extends Applet

{

public void paint(Graphics g)

{

g.setColor(Color.blue);

//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”

g.drawString("这是一个Java Applet程序",5,30);

g.setColor(Color.red);

g.setFont(new Font("宋体",Font.BOLD,36));

g.drawString("我改变了字体",5,80);//在Java Applet中绘制一行文字:“我改变了字体”

}

}

²实验后的练习:

5.程序中的主类如果不用public修饰,编译能通过吗?

6.程序中的主类如果不用public修饰,程序能正确运行吗?

7.程序将paint方法误写成Paint,编译能通过么?

8.程序将paint方法误写成Paint,运行时能看到有关的输出信息吗?

3.联合编译

²实验要求:

编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

模板1:Hello.java

public class MainClass

{

public static void main (String args[ ])

{

//命令行窗口输出"你好,只需编译我"

System.out.println("你好,只需编译我");A a=new A();

a.fA();

B b=new B();

b.fB();

C c=new C();

c.fC();

}

}

模板2:A.java

publicclass A

{

void fA()

{

System.out.println("I am A");//命令行窗口输出"I am A"

}

}

模板3:B.java

publicclass B

{

void fB()

{

System.out.println("I amB");//命令行窗口输出"I amB"

}

}

模板4:C.java

publicclassC

{

void fC()

{

System.out.println("I amC");//命令行窗口输出"I amC"

}

}

²实验后的练习:

9.将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。要求每次修改A.java源文件后,单独编译A.java,然后直接运行应用程序Hello。

10.如果需要编译某个目录下的全部Java源文件,比如C:\1000目录,可以使用如下命令:c:\1000\javac *.java

实验二Java基本数据类型与控制语句

【目的】

①掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;

②掌握使用if…else if多分支语句;

③使用if…else分支和while循环语句解决问题。

【内容】

1.输出希腊字母表。

²实验要求:

编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

GreekAlphabet.java

public classGreekAlphabet

{

public static void main (String args[ ])

{

int startPosition=0,endPosition=0;

char cStart='α',cEnd='ω';

startPosition= (int)cStart; //cStart做int型转换据运算,并将结果赋值给startPosition

endPosition=(int)cEnd;//cEnd做int型转换运算,并将结果赋值给endPosition

System.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int) cStart);

System.out.println("希腊字母表:");

for(int i=startPosition;i<=endPosition;i++)

{

char c='\0';

c=(char)i; //i做char型转换运算,并将结果赋值给c

System.out.print(" "+c);

if((i-startPosition+1)==0)

System.out.println("");

}

}

}

²实验后的练习:

1.将一个double型数据直接赋值给float型变量,程序编译时提示怎样的错误?

2.在应用程序的main方法中增加语句:

float x=0.618;

程序能编译通过么?

3.在应用程序的main方法中增加语句:

byte y=128;

程序能编译通过么?

4.在应用程序的main方法中增加语句:

int z=(byte)128;

程序输出变量z的值是多少?

2.回文数。

²实验要求:

编写一个Java应用程序。用户从键盘输入一个1—99999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

Number.java

import javax.swing.JOptionPane;

public class Number

{

public static void main(String args[])

{

int number=0,d5,d4,d3,d2,d1;

String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");

number=Integer.parseInt(str);

if(number>=1 && number<=99999) //判断number在1至99999之间的条件

{

d5=number/10000; //计算number的最高位(万位)d5

d4= number/1000;//计算number的千位d4

d3= number/100;//计算number的百位d3

d2=number0/10;

d1=number;

if(d5!=0) //判断number是5位数的条件

{

System.out.println(number+"是5位数");

if((d5==d1)&&(d4==d2)) //判断number是回文数的条件

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d4!=0) //判断number是4位数的条件

{

System.out.println(number+"是4位数");

if(d4==d1 && d3==d2) //判断number是回文数的条件码

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d3!=0) //判断number是3位数的条件

{

System.out.println(number+"是3位数");

if(d3==d1) //判断number是回文数的条件

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d2!=0)

{

System.out.println(number+"是2位数");

if(d1==d2)

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d1!=0)

{

System.out.println(number+"是1位数");

System.out.println(number+"是回文数");

}

}

else

{

System.out.printf("\n%d不在1至99999之间",number);

}

}

}

²实验后的练习:

1.程序运行时,用户从键盘输入2332,程序提示怎样的信息?

2.程序运行时,用户从键盘输入654321,程序提示怎样的信息?

3.程序运行时,用户从键盘输入33321,程序提示怎样的信息?

3.猜数字游戏。

²实验要求:

编写一个Java应用程序,实现下列功能:

1)程序随机分配给客户一个1—100之间的整数

2)用户在输入对话框中输入自己的猜测

3)程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”。

4)用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

GuessNumber.java

import javax.swing.JOptionPane;

public class GuessNumber

{

public static void main (String args[ ])

{

System.out.println("给你一个1至100之间的整数,请猜测这个数");

int realNumber=(int)(Math.random()*100)+1;

int yourGuess=0;

String str=JOptionPane.showInputDialog("输入您的猜测:");

yourGuess=Integer.parseInt(str);

while(yourGuess!=realNumber) //循环条件

{

if(yourGuess>realNumber) //条件代码

{

str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");

yourGuess=Integer.parseInt(str);

}

else if(yourGuess条件代码

{

str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");

yourGuess=Integer.parseInt(str);

}

}

System.out.println("猜对了!");

}

}

²实验后的练习:

1. 用“yourGuess>realNumber”替换【代码1】,可以么?

2. 语句:“System.out.println(“猜对了!”);”为何要放在while循环语句之后?放在while语句的循环体中合理吗?

实验三类与对象、继承

【目的】

①使用类来封装对象的属性和功能;

②掌握类变量与实例变量,以及类方法与实例方法的区别;

③掌握使用package和import语句。

④巩固以下概念:

子类的继承性

子类对象的创建过程

成员变量的继承与隐藏

方法的继承与重写

【内容】

1.三角形、梯形和圆形的类封装

²实验要求:

编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:

a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。

b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。

c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

AreaAndLength.java

class Trangle

{

double sideA,sideB,sideC,area,length;

boolean boo;

public Trangle(double a,double b,double c)

{

sideA=a;

sideB=b;

sideC=c; //参数a,b,c分别赋值给sideA,sideB,sideC

if(a+b>c&&a+c>b&&b+c>a) //a,b,c构成三角形的条件表达式

{

boo=true; //给boo赋值。

}

else

{

boo=false; //给boo赋值。

}

}

double getLength()

{

///方法体,要求计算出length的值并返回

if(boo)

{

length=sideA+sideB+sideC;

return length;

}

else {

System.out.println("不是一个三角形,不能计算周长");

return 0;

}

}

public double getArea()

{

if(boo)

{

double p=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;

return area;

}

else

{

System.out.println("不是一个三角形,不能计算面积");

return 0;

}

}

public void setABC(double a,double b,double c)

{

sideA=a;

sideB=b;

sideC=c; //参数a,b,c分别赋值给sideA,sideB,sideC

if(a+b>c&&a+c>b&&b+c>a) //a,b,c构成三角形的条件表达式

{

boo=true; //给boo赋值。

}

else

{

boo=false; //给boo赋值。

}

}

}

class Lader

{

double above,bottom,height,area;

Lader(double a,double b,double h)

{

above=a;

bottom=b;

height=h; //方法体,将参数a,b,c分别赋值给above,bottom,height

}

double getArea()

{

area=(above+bottom)/2*height;

return area;

//方法体,,要求计算出area返回

}

}

class Circle

{

double radius,area;

Circle(double r)

{

radius=r; //方法体

}

double getArea()

{

return Math.PI*radius*radius;//方法体,要求计算出area返回

}

double getLength()

{

return Math.PI*2*radius;//getArea方法体的代码,要求计算出length返回

}

void setRadius(double newRadius)

{

radius=newRadius;

}

double getRadius()

{

return radius;

}

}

public class AreaAndLength

{

public static void main(String args[])

{

double length,area;

Circle circle=null;

Trangle trangle;

Lader lader;

circle= new Circle(10); //创建对象circle,参数为10

trangle=new Trangle(3,4,5); //创建对象trangle。

lader=new Lader(3,4,10) //创建对象lader

length=circle.getLength(); // circle调用方法返回周长并赋值给length

System.out.println("圆的周长:"+length);

area=circle.getArea();// circle调用方法返回面积并赋值给area

System.out.println("圆的面积:"+area);

length=trangle.getLength(); // trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:"+length);

area=trangle.getArea(): // trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:"+area);

area=lader.getArea(); // lader调用方法返回面积并赋值给area

System.out.println("梯形的面积:"+area);

trangle.setABC(12,34,1) ;

// trangle调用方法设置三个边,要求将三个边修改为12,34,1。

area=trangle.getArea(); // trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:"+area);

length=trangle.getLength();// trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:"+length);

}

}

²实验后的练习:

1. 程序中仅仅省略【代码15】,编译能通过吗?

2. 程序中仅仅省略【代码16】,编译能通过吗?

3. 程序中仅仅省略【代码15】,运行时出现怎样的异常提示?

4.给Trangle类增加3个方法,分别用来返回3个边:sideA、sideB和sideC。

5.让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。

2.实例成员与类成员。

²实验要求:

按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。

²程序运行效果示例:

程序运行效果如下图所示:

²程序模板:

Example.java

class A

{

float a; //声明一个float型实例变量a

static float b;//声明一个float型类变量b,即static变量b

void setA(float a)

{

this.a=a; //将参数a的值赋值给成员变量a

}

void setB(float b)

{

this.b=b; //将参数b的值赋值给成员变量b

}

float getA()

{

return a;

}

float getB()

{

return b;

}

void inputA()

{

System.out.println(a);

}

static void inputB()

{

System.out.println(b);

}

}

public class Example

{

public static void main(String args[])

{

A.b=100; //通过类名操作类变量b,并赋值100

A.inputB(); //通过类名调用方法inputB()

A cat=new A();

A dog=new A();

cat.setA(200); //cat象调用方法setA(int a)将cat的成员a的值设置为200

cat.setB(400); //cat调用方法setB(int b)将cat的成员b的值设置为400

dog.setA(150);//dog象调用方法setA(int a)将dog的成员a的值设置为150

dog.setB(300); //dog调用方法setB(int b)将dog的成员b的值设置为300

cat.inputA();//cat调用inputA()。

cat.inputB();//cat调用inputB()。

dog.inputA();//dog调用inputA()。

dog.inputB()://dog调用inputB()。

}

}

²实验后的练习:

1.将inputA()方法中的

System.out.println(a);

改写为

System.out.println(a+b);

编译是否出错?为什么?

2.将inputB()方法中的

System.out.println(b);

改写为

System.out.println(a+b);

编译是否报错?为什么?

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页