实验一   Java环境演练

 

【目的】

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

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

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

【内容】

   1.一个简单的应用程序

²  实验要求:

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

²  程序运行效果示例:

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

²  程序模板:

 Hello.java

public class Hello

{

public static void main (String args[ ])

{

【代码1】    //命令行窗口输出"你好,很高兴学习Java"

A a=new A();

a.fA();

}

}

class A

{

void fA()

{

【代码2】    //命令行窗口输出"We are students"

}

}

²  实验后的练习:

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

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

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

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

2.联合编译

²  实验要求:

编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。提示:直接编译Hello.java即可,或者把所有文件添加到Eclipse的项目的src目录下,再运行Hello.java。

²  程序模板

模板1:Hello.java

public class MainClass

{

public static void main (String args[ ])

{

【代码1】    //命令行窗口输出"你好,只需编译我"

A a=new A();

a.fA();

B b=new B();

b.fB();

}

}

模板2 :A.java

public class A

{

void fA()

{

【代码2】    //命令行窗口输出"I am A"

}

}

模板3 :B.java

public class B

{

void fB()

{

【代码3】    //命令行窗口输出"I am B"

}

}

模板4 :C.java

public class C

{

void fC()

{

【代码4】    //命令行窗口输出"I am C"

}

}

²  实验后的练习:

5.将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。要求每次修改A.java源文件后,单独编译A.java,然后直接运行应用程序Hello。提示,某目录下所有文件编译命令javac *.java,某个文件单独编译命令 java 该文件名.java。

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

【结果】

将本次上机实验结果按照以上内容依次填写实验目标、过程、结果。

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

 

【目的】

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

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

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

【内容】

   1.输出希腊字母表。

²  实验要求:

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

²  程序模板

GreekAlphabet.java

public class GreekAlphabet

{

public static void main(String[] args) {

// TODO Auto-generated method stub

int startPosition=0,endPosition=0;

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

startPosition = (int)cStart;

endPosition = (int)cEnd;

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

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

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

{

char c='\0';

c = (char)i;

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

if((i-startPosition+1)%10==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—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如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(【代码1】) //判断number在1至99999之间的条件

{

【代码2】   //计算number的最高位(万位)d5

【代码3】   //计算number的千位d4

【代码4】   //计算number的百位d3

d2=number%100/10;

d1=number%10;

if(【代码5】)  //判断number是5位数的条件

{

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

if(【代码6】) //判断number是回文数的条件

{

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

}

else

{

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

}

}

else if(【代码7】)  //判断number是4位数的条件

{

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

if(【代码8】) //判断number是回文数的条件码

{

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

}

else

{

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

}

}

else if(【代码9】)  //判断number是3位数的条件

{

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

if(【代码10】) //判断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,程序提示怎样的信息?

思考题: 编写一个程序,把变量n的初始值设置为1678,然后利用除非运算取余运算把变量的每位数字都提出来打印,输出结果为:n=1678,n的每位数字是1,6,7,8

提示:输入使用下面语句

Scanner reader = new Scanner(System.in);

int i= reader.nextInt();

同时,别忘了在源文件头部导入Scanner类,importa java.util.Scanner;有关该类的详细说明,请查阅JDK帮助文档。

实验三   类与对象、继承

【目的】

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

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

③掌握使用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)

{

【代码1】 //参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码2】) //a,b,c构成三角形的条件表达式

{

【代码3】 //给boo赋值。

}

else

{

【代码4】 //给boo赋值。

}

}

double getLength()

{

【代码5】 //方法体,要求计算出length的值并返回

}

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)

{

【代码6】 //参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码7】) //a,b,c构成三角形的条件表达式

{

【代码8】 //给boo赋值。

}

else

{

【代码9】 //给boo赋值。

}

}

}

class Lader

{

double above,bottom,height,area;

Lader(double a,double b,double h)

{

【代码10】 //方法体,将参数a,b,c分别赋值给above,bottom,height

}

double getArea()

{

【代码11】 //方法体,,要求计算出area返回

}

}

class Circle

{

double radius,area;

Circle(double r)

{

【代码12】 //方法体

}

double getArea()

{

【代码13】 //方法体,要求计算出area返回

}

double getLength()

{

【代码14】 //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;

【代码15】 //创建对象circle

【代码16】 //创建对象trangle。

【代码17】 //创建对象lader

【代码18】 // circle调用方法返回周长并赋值给length

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

【代码19】 // circle调用方法返回面积并赋值给area

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

【代码20】 // trangle调用方法返回周长并赋值给length

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

【代码21】 // trangle调用方法返回面积并赋值给area

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

【代码22】 // lader调用方法返回面积并赋值给area

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

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

【代码24】 // trangle调用方法返回面积并赋值给area

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

【代码25】 // 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

{

【代码1】             //声明一个float型实例变量a

【代码2】             //声明一个float型类变量b,即static变量b

void setA(float a)

{

【代码3】        //将参数a的值赋值给成员变量a

}

void setB(float b)

{

【代码4】       //将参数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[])

{

【代码5】            //通过类名操作类变量b,并赋值100

【代码6】            //通过类名调用方法inputB()

A cat=new A();

A dog=new A();

【代码7】    //cat象调用方法setA(int a)将cat的成员a的值设置为200

【代码8】    //cat调用方法setB(int b)将cat的成员b的值设置为400

【代码9】    //dog象调用方法setA(int a)将dog的成员a的值设置为150

【代码10】   //dog调用方法setB(int b)将dog的成员b的值设置为300

【代码11】   //cat调用inputA()。

【代码12】   //cat调用inputB()。

【代码13】   //dog调用inputA()。

【代码14】   //dog调用inputB()。

}

}

²  实验后的练习:

1. 将inputA()方法中的

System.out.println(a);

改写为

System.out.println(a+b);

编译是否出错?为什么?

2. 将inputB()方法中的

System.out.println(b);

改写为

System.out.println(a+b);

编译是否报错?为什么?

3.使用package语句与import语句。

²  实验要求:

按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。掌握一些重要的操作步骤。

²  程序运行效果示例:

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

²  程序模板:

模板1

将模板1给出的Java源文件命名为SquareEquation.java,将编译后得到的字节码文件复制到c:\1000\tom\jiafei目录中。

SquareEquation.java

package tom.jiafei;

public class SquareEquation

{

double a,b,c;

double root1,root2;

boolean boo;

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

{

this.a=a;

this.b=b;

this.c=c;

if(a!=0)

{

boo=true;

}

else

{

boo=false;

}

}

public void  getRoots()

{

if(boo)

{

System.out.println("是一元2次方程");

double disk=b*b-4*a*c;

if(disk>=0)

{

root1=(-b+Math.sqrt(disk))/(2*a);

root2=(-b-Math.sqrt(disk))/(2*a);

System.out.printf("方程的根:%f,%f\n",root1,root2);

}

else

{

System.out.printf("方程没有实根\n");

}

}

else

{

System.out.println("不是一元2次方程");

}

}

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

{

this.a=a;

this.b=b;

this.c=c;

if(a!=0)

{

boo=true;

}

else

{

boo=false;

}

}

}

模板2

将模板2给出的Java源程序SunRise.java保存到d:\2000中。在编译模板2给出的Java源文件之前,要重新设置classpath。假设本地机SDK的安装目录是E:\jdk1.7。

在命令行执行如下命令:

set classpath=e:\jdk1.7\jre\lib\rt.jar;.;c:\1000

然后编译模板2给出的Java源程序。或用鼠标右键点击“我的电脑”,弹出快捷菜单,然后选择“属性”命令,弹出“系统属性”对话框,再单击该对话框中的“高级”选项卡,然后单击“环境变量”按钮。将classpath的值修改为:

E:\jdk1.7\jre\lib\rt.jar;.;c:\1000

然后重新打开一个命令行窗口,编译模板2给出的Java源程序。

SunRise.java

import tom.jiafei.*;

class SunRise

{

public static void main(String args[ ])

{

SquareEquation equation=new SquareEquation(4,5,1);

equation.getRoots();

equation.setCoefficient(-3,4,5);

equation.getRoots();

}

}

²  实验后的练习:

假设SDK的安装目录是E:\jdk1.7,那么Java运行系统默认classpath的值是:E:\jdk1.7\jre\lib\rt.jar;.;

其中的“”表示应用程序可以使用当前目录中的无名包类以及当前目录下的子目录中的类,子目录中的类必须有包名,而且包名要和子目录结构相对应。

因此,如果将模板2应用程序Sunrise.java的字节码文件存放到d:\5000中,并将SquareEquation.java的字节码文件存放在D:\5000\tom\jiafei中,那么就不需要修改classpath。要特别注意的是,因为SquareEquation.java有包名,切不可将SquareEquation.java以及它的字节码文件存放在d:\5000中,即不可以和Sunrise.java的字节码存放在一起,请进行如下的练习:

1. 将SquareEquation.java存放在D:\5000\tom\jiafei中,编译:

D:\5000\tom\jiafei\javac SquareEquation.java

2. 将Sunrise.java存放到D:\5000中,编译:

D:\5000\javac Sunrise.java

3. 运行:

java Sunrise

【结果】

将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。

《Java语言程序设计》上机实验的更多相关文章

  1. 2018-2019-2 20175204 张湲祯 实验二《Java面向对象程序设计》实验报告

    2018-2019-2-20175204 张湲祯 实验二 <Java开发环境的熟悉>实验报告 实验二 Java面向对象程序设计 一.实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象 ...

  2. 20175315 实验二《Java面向对象程序设计》实验报告

    20175315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会写以下三种代码: 伪代码 ...

  3. 2018-2019-2 20175317 实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175317 实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 面向对象程序设计-1 参考 http://www.cnblogs.com/roce ...

  4. 2016-2017-2 20155324实验二《Java面向对象程序设计》实验报告

    2016-2017-2 20155324实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  5. 2017-2018-2 20165327 实验二 《Java面向对象程序设计》实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  6. 2017-2018-2 20165315 实验二《Java面向对象程序设计》实验报告

    2017-2018-2 20165315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会 ...

  7. 2016-2017-2 20155326实验二《Java面向对象程序设计》实验报告

    2016-2017-2 20155326实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  8. 2017-2018-2 20165318 实验二《Java面向对象程序设计》实验报告

    2017-2018-2 20165318 实验二<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄  ...

  9. 20155215 《Java程序设计》实验二( Java面向对象程序设计)实验报告

    20155215 <Java程序设计>实验二( Java面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  10. 2016-2017-2 20155227实验二《Java面向对象程序设计》实验报告

    2016-2017-2 20155227实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

随机推荐

  1. 分词工具ICTCLAS5.0使用心得

    接触自然语言处理有一年多了,最基本的一些自然是分词,词性标注,命名实体识别之类的知识,有些应用知道原理是一回事,自己动手做起来又是另外一回事了.最近又开始重操旧业:分词.分词最著名的自然就是中科院的分 ...

  2. Spring与Quartz的整合实现定时任务调度(转)

    源:http://kevin19900306.iteye.com/blog/1397744 最近在研究Spring中的定时任务功能,最好的办法当然是使用Quartz来实现.对于一个新手来说,花了我不少 ...

  3. 使用python标准库urllib2访问网页

    #访问不需要登录的网页import urllib2target_page_url='http://10.224.110.118/myweb/view.jsp' f = urllib2.urlopen( ...

  4. python爬虫神器PyQuery的使用方法

    你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些 ...

  5. iOS分类、延展和子类的区别

    iOS分类.延展和子类的区别 类别.延展.子类的区别   类别 延展 子类 功能 为类添加方法,不用知道类的源码,添加变量(通过运行时,具体参考下面注解) 为类添加私有变量和私有方法,在类的源文件中书 ...

  6. iOS 字符转换

    字典或者数组转化为nsstring NSArray *arr = [NSArray arrayWithObject:@"1"]; NSString *str = [arr JSON ...

  7. jquery选择器(三)-过滤选择器

    一.基本过滤选择器 二.内容过滤选择器 1. 包含文本内容为“text”的元素 2. 含有某个选择器所匹配的父元素 3. 包含有子元素或者文本的父元素 4. 不含有子元素或者文本的父元素 三.可见性过 ...

  8. MySQL数据库的事务管理

    当前在开发ERP系统,使用到的数据库为Mysql.下面介绍下如何开启事务,以及事务隔离的机制 : 1. 检查当前数据库使用的存储引擎. show engines; 2. 修改前my.ini中的文件如下 ...

  9. redis-key2

    package com.ztest.redis; import java.util.List; import redis.clients.jedis.Jedis; import com.sun.ist ...

  10. linux远程复制和压缩文件的命令

    1.linux导出指定数据库表 mysqldump  127.0.0.1  -uname -ppwd  databasename  tablename>/home/name/tablename. ...