java实训.docx

上传人:b****6 文档编号:6080538 上传时间:2023-01-03 格式:DOCX 页数:12 大小:65.41KB
下载 相关 举报
java实训.docx_第1页
第1页 / 共12页
java实训.docx_第2页
第2页 / 共12页
java实训.docx_第3页
第3页 / 共12页
java实训.docx_第4页
第4页 / 共12页
java实训.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

java实训.docx

《java实训.docx》由会员分享,可在线阅读,更多相关《java实训.docx(12页珍藏版)》请在冰豆网上搜索。

java实训.docx

java实训

 

Java程序设计实训报告

 

班级:

3G软件开发2011-2班

学号:

姓名:

指导教师:

王捷

成绩:

 

题目1:

输入一个包含10个整数元素的数组,要求:

最大元素的与第一个元素交换,最小元素与最后一个元素交换,并打印经过交换后的所有数组元素。

   

解题思路:

先分别找出来最大和最小值,然后和临时的交换值,在考虑如果最小值是第一个的数情况。

程序代码:

publicclassTest3{

publicstaticvoidmain(String[]args){

intmax,min,temp1,temp2,i;

inta[]=newint[10];

System.out.println("请输入十个数字");

Scannersc=newScanner(System.in);

for(i=0;i<10;i++)

{

a[i]=sc.nextInt();

}

max=0;

min=0;

for(i=0;i<10;i++)

{

if(a[i]>a[max])

max=i;

if(a[i]

min=i;

}

temp1=a[0];

a[0]=a[max];

a[max]=temp1;//首先交换a[0]和最大值a[max]

if(min!

=0)

{

//如果最小值不是a[0],执行下面

temp2=a[min];

a[min]=a[9];

a[9]=temp2;//交换a[min]和a[n-1]

}

else

{//如果最小值是a[0],执行下面

temp1=a[9];

a[9]=a[max];

}

System.out.println("交换后的数组是:

");

for(i=0;i<10;i++){//输出数组

System.out.print(a[i]+"");

}

}

}

题目2:

get方法和set方法

定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初值,并提供该成员的getXXX()和setXXX()方法

解题思路:

这道题比较简单,按照题的要求就行。

定义一个Animal类,输出它的名称和颜色。

程序代码:

publicclassAnimal{

privatestaticStringname;

privatestaticStringcolor;

publicAnimal(Stringname,Stringcolor){

this.name=name;

this.color=color;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicStringgetColor(){

returncolor;

}

publicvoidsetColor(Stringcolor){

this.color=color;

}

publicstaticvoidmain(String[]args){

Animalanimal=newAnimal(name,color);

Scannersc=newScanner(System.in);

System.out.println("请输入动物:

");

name=sc.next();

System.out.println("请输入颜色:

");

color=sc.next();

System.out.println("您选择的角色是:

"+animal.getName()+"它的颜色是:

"+animal.getColor());

}

}

题目3定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量

1.要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。

具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。

Role类中要体现出this的几种用法。

2.从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。

同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,并提供一个finalsing()方法。

3."Manager"类继承"Employee"类,有一个final成员变量"vehicle"

4.在main()方法中制造Manager和Employee对象,并测试这些对象的方法

解题思路:

按照所给的提示,写了三个类和一个测试类。

核心程序代码:

//两个构造方法

publicEmployee(Stringname){

super(name);

}

publicEmployee(Stringname,Stringsex,intage,intsalary,Stringid){

super(name,sex,age);

this.salary=salary;

this.id=id;

}

//覆盖play()方法,

publicvoidplay(){

System.out.println("员工号码:

"+id+","+"工资:

"+salary);

}

finalvoidsing(){

System.out.println("姓名:

"+name+","+"性别:

"+sex+","+"年龄:

"+age);

}

}}

题目4

品尝饮料,

1、建立一个Java抽象类Drink,应当:

a、声明一个抽象方法taste(),该方法负责输出饮料的味道;

b、声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:

c、声明静态工厂方法getDrink(intdrinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。

该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。

2、建立Drink的具体子类:

a、分别建立Drink的子类:

Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);

b、实现taste()方法,要求在控制台打印各自的味道特征。

3、建立异常类DrinkNotFoundException

a、继承Exception

b、在Drink的方法getDrink(intdrinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。

c、在使用getDrink方法的类中捕捉该异常。

4、建立Test测试类,测试以上内容的正确性

a、编写main方法,通过命令行传参的方式传入某种饮料的类型。

b、在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。

注意捕获DrinkNotFoundException。

c、然后调用该饮料对象的taste()方法,输出该饮料的味道。

解题思路:

这道题是综合题,集中运用了所学的各种知识。

抽象类的应用,继承的应用,构造方法的应用及自定义异常处理。

程序代码:

publicabstractclassDrink{//抽象类

publicvoiddrink()throwsDrinkNotFoundException{//抛出异常

};

Stringname;

Stringfell;

abstractvoidtaste();//抽象方法

}

publicabstractclassDrink{//抽象类

publicvoiddrink(){

};

Stringname;

Stringfell;

abstractvoidtaste();//抽象方法

staticvoidgetDrink(intdrinkType)throwsDrinkNotFoundException

{}

//声明静态方法,抛出异常}

//创建Drink的子类

publicclassCoffeextendsDrink{

privateStringname="咖啡";

privateStringfell="苦";

publicvoidtaste(){//调用抽象方法taste();

System.out.println(name+":

"+fell);

}}

publicclassBear{

privateStringname="啤酒";

privateStringfell="爽";

publicvoidtaste(){//调用抽象方法taste();

System.out.println(name+":

"+fell);

}}

publicclassMilkextendsDrink{

privateStringname="牛奶";

privateStringfell="黏";

publicvoidtaste(){

System.out.println(name+":

"+fell);

}}

publicclassDrinkNotFoundExceptionextendsException{//自定义异常处理

publicDrinkNotFoundException(){

super("对不起!

没有您输入的饮料类型。

");//出现异常抛出

}}

importjava.util.Scanner;

publicclassTest{//测试类

publicstaticvoidmain(String[]args){

try{Testm=newTest();

m.getDrink();

}catch(DrinkNotFoundExceptione){

System.out.println(e.getMessage());

}}

privatevoidgetDrink()throwsDrinkNotFoundException{

System.out.println("请输入你要的饮料名称:

");

System.out.println("1:

咖啡2:

啤酒3:

牛奶");

Scannersc=newScanner(System.in);

inti=sc.nextInt();

switch(i)//运用switch语句,

{case1:

Coffec=newCoffe();

c.taste();

break;

case2:

Bearb=newBear();

b.taste();

break;

case3:

Milkm=newMilk();

m.taste();

break;

default:

thrownewDrinkNotFoundException();

}}}

题目5

定义一个含有十个元素的int型数组,找出最大元素和最小元素,并将最大元素和第一个元素交换位置,最小元素和最后一个元素交换位置,将结果输出在控制台。

解题思路:

这道题主要练习数组的应用

程序代码:

importjava.util.Scanner;

publicclassshu{

publicstaticvoidmain(String[]args){

inta[]=newint[10];//定义数组

intt,t1;

for(inti=0;i<10;i++)//循环输入是个数,代表数组中的是个元素

{

Scannersc=newScanner(System.in);

a[i]=sc.nextInt();

}

intmax=a[0];

intmin=a[0];

for(inti=0;i

{

if(a[i]>max)

max=a[i];

if(a[i]

{

min=a[i];

}}

t=a[0];//最大元素和第一个元素交换位置

a[0]=max;

max=t;

t1=a[9];//最小元素和最后一个元素交换位置

a[9]=min;

min=a[9];

for(inti=0;i

{

System.out.print(a[i]+"");

}}

}

题目6、编写Java程序,模拟简单的计算器。

定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。

编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。

在main方法中创建Number类的对象,调用各个方法,并显示计算结果。

解题思路:

创建名为Number的类,声明两个整型变量n1,n2为私有。

用构造方法给n1,n2赋予初始值。

定义加、减、乘、除4个公有成员方,并对2个变量执行运算。

最后在main方法中,创建类的对象,对其实例化,编写输入语句,从键盘输出n1,n2的值,并打印出计算结果。

程序代码:

packagep1;

importjava.util.Scanner;

publicclassNumber{

privateintn1;

privateintn2;

publicNumber(intn1,intn2){

}

publicNumber(){

this.n1=n1;

this.n2=n2;

}

publicintgetAddition(){

returnn1+n2;

}

publicintgetSubtration(){

returnn1-n2;

}

publicdoublegetMultiplication(){

returnn1*n2;

}

publicdoublegetDivision(){

returnn1/n2;

}

publicstaticvoidmain(String[]args){

Numbern=newNumber();

Scanners=newScanner(System.in);

System.out.println("请输入n1:

");

n.n1=s.nextInt();

System.out.println("请输入n2:

");

n.n2=s.nextInt();

System.out.println("和:

"+n.getAddition());

System.out.println("差:

"+n.getSubtration());

System.out.println("积:

"+n.getMultiplication());

System.out.println("商:

"+n.getDivision());

}

}

实训总结:

为期三周的实训结束了,暑假前的一周,和刚刚过去的两周。

可以说实训是对上一个学期学习成果的检验,更是提高和巩固在实训前,尽管也上了一个学期的课程,并且也做了不少的实验,但是总感觉自己的欠缺系统的整理和归纳,很多东西都给混淆了。

经过一个月的实训,所学的知识已经被梳理了一遍,很多东西都不在混淆了,思路整理清了。

学习就是一个渐进的过程,在这个过程中,我们不断的积累,不断地将我们所学到的东西转化为我们自己的,那样才是学有所成。

在实训开始特别是后两周的实训开始的时候,很多东西都给遗忘了,就连一些最基本的知识点也给混淆了。

每次遇到问题,据必须去翻书,查找资料,才能理清思路。

慢慢的,上一个学期学到的重要的知识点就都回忆起来了。

而且,通过一些专题训练,我们能发现自己的不足,从而将其弥补过来。

学习JAVA,觉对不要仅仅整天盯着语法细节,光看看是没有用的,而应该注重动手能力培养和编程思想的提高。

就好比一篇优美的文章,绝对不仅仅是作者用了多么华丽的词藻和优美的句子,而是文章的思想、意义有多么耐人寻味。

可以多做练习,多练习那些经典的列子,同样的问题可以试着用多种方法去实现,这样编程思维得到了扩展,不至于变得很死板。

经常练习是很重要的。

在这为期四周的实训中遇到了许多的问题,也因此烦躁过,但是不能,必须要有耐心,因为只有耐心才能解决问题前一周的实训,是在期末考试结束后开始的,那个时候对于所学的知识,还没有遗忘,即便是这样的情况,在刚接到老师发给的题目的时候,还是有一种迷茫,不知所措的感觉,因为,无从下手!

究其原因,还是对知识不熟练,不能够运用。

记得,为难我的第一个问题就是如何从键盘上去输入内容,大概是在平时上课的时候,没有认真听课吧,以至于刚开始就遇到困难,最后是向别人请教了一下,才知道用的是scanner,对于这个词真是有一种陌生的感觉,然后,开始查阅从图书馆借阅的资料,在电脑上面从简单的例子开始敲,模仿,慢慢熟悉它。

这只是一个开始,再看题目的时候,仍然是一点思路都没有,看着别人都能多少写一点,这难道不是对自己的否定!

可是作业总是要完成的,问别人又不可能短时间就给自己讲解,只能从网上搜了一下,看别人写的代码,总算是有一个大的轮廓,知道应该往哪方面用力了,继而开始一个一个词看,一行代码一行代码看,搞清楚为什么要这样写,目的是什么,这样写的依据又是什么,总之是,遇到不懂的地方,哪怕是马马虎虎,是是而非的清楚,也必须回归到课本,回归到资料,直到真正的弄清楚,能说出来概念性的原理!

在看了几个代码之后,开始自己着手试着写,这有让我体会到了什么叫眼高手低。

开学后的两个周实训开始老师也布置了新的作业,给了新的题目。

问题有出现了,经过两个月的空白,学的东西好像都还给老师了,又傻眼了,学习就是这样,没有很牢固的基础是不行的,不可以三天打鱼两天晒网,要自己踏踏实实认真的去解决问题。

要一步一个脚印,认认真真,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。

本次我们分别完成了二十几个简单的应用了各种java知识的程序,这些程序进一步练习了我们所学的知识,真正做到了理论与实践相结合。

在我所学的语言当中,我自认为JAVA是一门比较强大的面向对象的编程语言,不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性较强,可以说比较的经典和强悍。

所以学好java语言有很大的用处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1