Java实验报告01-03

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

相关推荐