Java程序设计实验报告
实验一 Java开发环境的安装与配置
一 实验目的与要求
1. 熟悉安装和配置JDK开发环境
2. 熟悉安装和配置IDE开发工具
3. 掌握Java程序编辑、编译和运行的过程
4. 掌握Java程序的构成特点
5. 总结在调试过程中的错误。
二 实验环境
应用软件:Jdk1.5.0 , jcreator
操作系统:window2000以。
三 实验思考
1 什么是JVM, 它的作用是什么?
答:JVM是Java虚拟机,它是编译后的Java程序和硬件系统之间的接口。我们可以把JVM看做一个虚拟的处理器。它不仅解释执行编译后的Java指令,而且还对其进行安全检查。
2 简单总结一下一个Java程序的基本结构。
答:(1)一个包的声明(2)任意数量的引入语句(3)类的声明和接口的声明。
四 实验内容
1 按照下面的步骤设置环境变量path
(1) 找到机器上已安装的jdk的所在路径。
C:\j2sdk1.4.2_14
(2) 找到它的子目录bin,在该目录下应该包含java.exe,javac.exe,appletviewer等应用程序。记录下bin的完整路径。
C:\j2sdk1.4.2_14\bin
(3)切换到windows的命令行方式,在默认的目录下,输入命令java ,记录结果。
关闭命令行方式。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
(4)右键点击“我的电脑”,打开“属性”->“高级”->“环境变量”,找到Path变量,
点击编辑按钮,在弹出的编辑对话框里,将步骤2的路径添加到尾部。
(5)重新打开命令行方式,输入java –version ,如果正确显示java的版本号,则
说明环境设置成果。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\user>java -version
java version "1.4.2_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_14-b05)
Java HotSpot(TM) Client VM (build 1.4.2_14-b05, mixed mode)
C:\Documents and Settings\user>
(6)将以上过程以及你设置的path变量值填写到实验报告中,并解释一下为什么一定要设置该环境变量。
Path变量值为:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem%JAVA_HOME%\bin;%JAVA_HOME%\bin;C:\Program Files\Java\jdk1.5.0
在环境变量里设置了,程序就会到那里查找要执行的方法的路径,可在任意位置执行JDK相关命令。
2 打开windows自带的记事本,输入下面的代码:
public class HelloWorld {
public static void main(String [] args){
System.out.println(“hello,world!”);
System.out.print(“hello,”);
System.out.print(“world!”);
}
}
(1) 将文件保存为HelloWorld.java, 记录下文件所在的位置。
(2) 切换到命令行方式,通过“cd”命令转至刚保存的文件所在路径下。
(3) 输入 javac HelloWorld.java 进行编译。
(4) 如果有错误发生,核对是否有错拼和漏拼。如果没有错误,查看同一文件夹下是否
多出了一个名为“HelloWorld.class”的文件。
(5) 继续在命令行下输入 java HelloWorld ,观察输出的结果。
输出结果为:hello,world!
Hello,world!
(6) 将以上过程和结果填写到实验报告中。
3 打开Jcreator程序。
(1)打开“config”(配置)菜单中的options(选项)选项,在选修窗口里找到“jdk profiles”(JDK配置文件)选项,查看其中的的jdk路径是否是机器中安装的jdk路径,如果不是,需要修改为该路径。
(2)打开“file”菜单下的new ->file, 点击“file type”,设置为 java file,点击file path,设置路径,并填写文件名HelloWorld。
(3)输入上面的HelloWorld的代码。
(4)点击bulid菜单下的compile(编译文件)命令,观察输出。
(5)在编译无错的前提下,点击bulid菜单的“execute”(执行项目)命令,观察输出结果。
输出结果为:hello,world!
Hello,world!
4 以下对HelloWorld程序的源码做一些小的调整,需要记录下各种错误信息。实验环境可以在记事本中进行,也可以在Jcreator中进行。
(1)将文件另存为Hello.java,进行编译,记录出错信息。在保留Hello.java作为文件名的前提下,如何改正该错误?
出错信息为:
Hello.java:1: class HelloWorld is public, should be declared in a file named Hel
loWorld.java
public class HelloWorld{
1 error
将“public class HelloWorld”中的HelloWorld改为Hello
(2)在源程序里,将class关键字去除,编译并记录出错信息。
出错信息为:’class’ or ’interface’ expected
(3)将main方法全部注释掉,编译并执行,记录出错信息。
<indentifier>expected Hello.java D:\ 3行
<indentifier>expected Hello.java D:\ 4行
<indentifier>expected Hello.java D:\ 5行
‘class’or’interface’expected Hello.java D:\7行
‘class’or’interface’expected Hello.java D:\7行
(4)将System的首字母改为小写的s,编译并记录出错信息。
package system does not exist Hello.java D:\ 3行
package system does not exist Hello.java D:\4行
package system does not exist Hello.java D:\5行
^.
(5)将class关键字前的public去除,编译执行,记录出错信息。
没有错误,能够执行。
实验二 Java基础编程
一 实验目的与要求
1. 掌握类的方法定义,掌握在main方法中创建类的实例,以及如何使用实例
2. 学会编写简单的类。
二 实验环境
应用软件:Jdk1.5.0 , jcreator
操作系统:window2000以上
三 实验思考
1 一个空对象(没有方法、没有成员)有没有大小?
答:有大小。
2 对“引用”这种类型做一下简单的描述或者定义。
答:“引用”是一个变量,它存放的是普通类型的数据或者是其它对象或变量的地址。
四 实验内容
1定义一个类FactorApp,
(1) 添加一个方法int factor(int n),在该方法中实现计算n的阶乘。
(2) 程序应该阻止n<0。
(3) 添加main方法,在main方法中,生成FactorApp的实例,调用实例的方法factor。计算并输出结果。
class FactorApp{
private int n;
FactorApp(int j){
n=j;
}
public int factor(int n){
if (n < 0) { System.out.println("error 输入数据小于零");
return -1;
}
else if (n == 0) return 1;
else return n * factor(n - 1);
}
}
public class Zhou{
public static void main(String args[]){
FactorApp factor1=new FactorApp(5);
System.out.println("5的阶乘为:"+factor1.factor(5));
}
}
2 编写一个方法,实现将数组后移一位。比如原数组为:
Array: 1 2 2 1
à 0 1 2 2 1
public class Array{
public void Array(int [] array){
for(int i=(array.length-1);i>0;i--){
array[i]=array[i-1];
}
array[0]=0;
}
public static void main(String[]args){
Array move=new Array();
int array1[]=new int[30];
for(int k=0;k<=5;k++)
{ array1[k]=k+1;
}
move.Array(array1) ;
for(int j=0;j<array1.length;j++)
System.out.print(array1[j]+" ");
}
}
3编写类Point以及测试类Pointtest,在Point类中:
(1) 添加私有整型变量x,y ,代表point的坐标。
(2) 为每个变量增加get-成员方法。
(3) 在PointTest类中实例化Point对象,并输出x,y的值,记录并分析该值。
(4) 修改Point类。添加构造器Point(int x, int y)。
(5) 在PointTest类中采用缺省构造器构造Point对象,编译,记录出错信息。
出错信息:cannot find symbol constructor Point();
(6) 按照带参构造器来构造Point对象。试着传递以不同类型的值(8种基本类型),看看类型转换中可能出现的问题。
(7) 重载构造器为Point(Point p),即允许用另一个Point对象来初始化。
(8) 添加成员方法print,打印格式形如: Point(2,3)
(9) 添加成员方法move(x,y),可以将坐标调整至(x,y)。
(10) 添加静态方法distance(Point p1, Point p2),计算并输出两点的距离。
import java.lang.Math;
public class Point{
private int x,y;
public Point(int x, int y){
this.x=x;
this.y=y;
}
public Point(Point p){
x=p.x;
y=p.y;
}
int get_x(){
return x;
}
int get_y(){
return y;
}
void print(){
System.out.println("点坐标为:");
System.out.println("P("+get_x()+","+get_y()+")");
}
static void distance(Point p1, Point p2){
double result=Math.sqrt((p1.get_x()-p2.get_x())*(p1.get_x()-p2.get_x())+(p1.get_y()-p2.get_y())*(p1.get_y()-p2.get_y()));
System.out.println(result);
}
void move(int x,int y){
this.x=x;
this.y=y;
}
}
class Circle extends Point{
private int radius;
public Circle(int x,int y,int radius){
super(x,y);
this.radius=radius;
}
void move(int x,int y){
super.move(x,y);
this.radius=radius+1;
}
static void distance(Circle c1, Circle c2){
double result=Math.sqrt((c1.get_x()-c2.get_x())*(c1.get_x()-c2.get_x())+(c1.get_y()-c2.get_y())*(c1.get_y()-c2.get_y()));
System.out.println(result);
}
}
class PointTest{
public static void main(String[] args){
Point p1=new Point(2,3),p2=new Point(p1);
Circle c1=new Circle(1,2,3);
c1.move(3,4);
System.out.println("x="+c1.get_x());
System.out.println("y="+c1.get_y());
p1.move(3,4);
p1.distance(p1,p2);
p1.print();
System.out.println("x="+p2.get_x());
System.out.println("y="+p2.get_y());
}
}
实验三 Java的面向对象的编程
一 实验目的与要求
1学习标准输入的方法
2 学习Java中的面向对象编程的思想。
3 练习复杂点的程序设计
二 实验环境
应用软件:Jdk1.5.0 , jcreator
操作系统:window2000以上
三 实验思考
1 学会Jdk帮助文档的使用。
2 继承有哪些好处?
增强了代码的重用性.、增强了代码的维护性、Java为用户提供了丰富的类库,用户可以通过继承类库中类来构建自己的类,从而缩短用户的开发周期。
3 简单总结目前为止你见到的Java与C++的差别。
(1)Java中没有指针;
(2)不支持多重继承,但允许一个类继承多个接口;
(3)Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象。
四 实验内容
1 扩展上一个实验的Point类为Circle类,要求:
(1)增加成员radius(半径).
(2) 设计它的构造器
(3)move方法要求每次移动后,半径增加1。
(4)在测试类中实例化该对象,并打印相关信息。
(5)在测试类中计算两个圆的距离(即两个圆心的距离)。
class Circle extends Point{
private int radius;
Circle(int a,int b,int c){
super(a,b);
radius=c;
}
public void move(){
radius++;
}
public int getradius(){
return radius;
}
}
public class GraphTest{
public static double distance(Circle p1,Circle p2){
System.out.println(Math.sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx())+(p1.gety()-p2.gety())*(p1.gety()-p2.gety())));
return 0;
}
public static void main(String args[]){
Circle circle1=new Circle(1,2,3);
Circle circle2=new Circle(2,3,4);
System.out.println("x="+circle1.getx()+","+"y="+circle1.gety()+",radius="+circle1.getradius());
distance(circle1,circle2);
}
}
2 利用以下代码,练习输入其他基本类型的数。
import java.io.*;
public class IOTester{
public static void main(String [] args) throws IOException {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int i=Integer.parseInt(reader.readLine());
Boolean.parseBoolean
System.out.println(i);
}
}
(1) 读取小数型的值。
(2) 读取bool型的值
(3) 读取字符串
3 编写一个猜单词位置的程序。单词由三个字母组成,单词放在一个由7个格组成的容器内。
单词的起始位置随即产生。要求用户输入字母的位置(从0-7),如果正确输出hitted,错误输出missed。全部正确,输出finished,并退出。
(本题需附上源代码,没有完成可以附上部分源代码)。
import java.util.*;
class lettergame
{private char letter;
private int position;
public lettergame(char a,int b)
{letter=a;
position=b;
}
public boolean guesslocation(int location1){
return position==location1;
}
}
public class Zhou{
public static void main(String[]args)
{lettergame est[]=new lettergame[3];
int j=0;int a=(int)(Math.random()*7);int b=(int)(Math.random() * 7);int c=(int)(Math.random() * 7);
while(a!=b&&a!=c&&b!=c){
est[0]=new lettergame('C',a);est[1]=new lettergame('O',b);est[2]=new lettergame('M',c);
Scanner scanner=new Scanner(System.in);
System.out.println("guess the position of word com from 0 to 7");
for(int i=0;i<3;i++)
{if(!est[i].guesslocation(scanner.nextInt()))System.out.println("missed");
else{
System.out.println("hitted");j++;
}
if(j==3)System.out.println("finished");
}
}
}
}
《Java程序设计实验报告》
学院:计算机与信息学院
专业班级:通信08-2班
学号:
学生姓名:Nest0r
任课教师:刘政
完成日期:20##-11-4
河南省高等教育自学考试实验报告册计算机及应用专业(本科段)《JAVA》姓名所属地市实验地点实验日期实验总成绩指导教师签名实验单位(…
五子棋JAVA实验报告一实验目的和要求1能够用编程语言实现一个简单的五子棋程序2在实际系统中使用实现人工智能的相关算法3进一步加深…
信息工程学院Java程序设计实习报告JAVA图形用户界面实验六Java图形用户界面1实验目的1掌握图形用户界面基本组件2了解如何使…
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间…
Java语言程序设计实验报告实验序号3一实验目的及要求1进一步熟练Java语法和常用方法的使用2进一步熟练Java程序结构3进一步…
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间…
Homework3实验报告一实验目的与要求1掌握Java中类和接口的基本知识2继承的基本知识3集合的基本操作二实验内容1PIMCo…
浙江理工大学Java程序设计实验报告20xx20xx学年第二学期学院班级姓名学号任课教师信息学院11数字媒体技术2周咪咪20xx3…
JAVE实验报告学号姓名班级指导教师129074401李阳网124柯栋梁安徽工业大学计算机学院20xx年1月实验一利用JAVA反射…
Java课程设计报告学号姓名班级指导教师129074068叶玉虎计122班柯栋梁安徽工业大学计算机学院20xx年12月实验一利用J…
一、实训项目简易记事本二、实训目的和要求本次实训是对前面学过的所有面向对象的编程思想以及JAVAWEB编程方法的一个总结、回顾和实…