太原理工大学Java实验报告.docx
- 文档编号:5992155
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:53
- 大小:943.21KB
太原理工大学Java实验报告.docx
《太原理工大学Java实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工大学Java实验报告.docx(53页珍藏版)》请在冰豆网上搜索。
太原理工大学Java实验报告
实验由本人当时亲自完成
仅供参考,希望可以帮助大家
本科实验报告
课程名称:
Java程序设计B
实验项目:
Java语言基础编程和面向对象设计
实验地点:
逸夫楼501
专业班级:
0000学号:
00000000
学生姓名:
氣宇軒昂
指导教师:
2012年13月13日
实验名称
实验一Java环境搭建和Java语言基础编程
实验目的和要求
1.掌握JDK、Eclipse的下载和安装,并熟练使用API帮助文档;
2.学会JavaApplication程序和JavaApplet程序的编制、编译和运行;
3.熟练掌握Java程序流程控制语句的使用;
4.熟练掌握Java语言数组的使用、字符串以及字符串处理方法的使用。
实验内容
1.下载并安装最新版本的JDK和Eclipse,设置环境变量,下载API帮助文档。
2.设计JavaApplication程序,输出“我叫×××,我编写的JavaApplication程序运行通过了”,分别在命令提示符和Eclipse环境中编译、运行。
3.完成习题2.7的编程、调试与运行。
4.使用for循环语句输出习题3.5中的图案。
5.完成习题3.9的编程、调试与运行。
6.完成习题4.5和4.7的编程、调试与运行。
主要仪器设备
台式或笔记本计算机
实验记录(写出实验内容中3,5,6的程序代码和运行结果)(可分栏或加页)
2.7程序代码
importjava.util.Scanner;
publicclassDataType
{
publicstaticvoidmain(String[]args)
{
Scannerin=newScanner(System.in);
System.out.print("请输入一个long型数据(输完按enter结束):
");
longa=in.nextLong();
System.out.print("请输入一个float型数据(输完按enter结束):
");
floatb=in.nextFloat();
System.out.print("请输入一个double型数据(输完按enter结束):
");
doublec=in.nextDouble();
System.out.println("long:
"+a);
System.out.println("float:
"+b);
System.out.println("double:
"+c);
}
}
运行结果
3.9程序代码
importjava.util.Scanner;
publicclassValueFore
{
intn;
ValueFore()
{
this.n=calculateN();
}
doublestackBy(intn)
{
inti;
doubles=1;
for(i=1;i<=n;i++)
{
s*=i;
}
returns;
}
doubleoverlap()
{
inti;
doublesum=1;
for(i=1;i<=this.n;i++)
{
sum+=1/stackBy(i);
}
returnsum;
}
intcalculateN()
{
Scannerin=newScanner(System.in);
inti=1;
doublea=in.nextDouble();
while(1/stackBy(i)>a)
{
i++;
}
returni;
}
publicstaticvoidmain(String[]args)
{
Scannerin=newScanner(System.in);
booleanb=true;
while(b)
{
System.out.println("请选择菜单:
");
System.out.println("1.计算不同精度的e值");
System.out.println("2.退出");
switch(in.nextByte())
{
case1:
{
System.out.println("请输入精度(例如:
1e-3,表示0.001):
");
ValueForea=newValueFore();
System.out.println("e="+a.overlap());
};break;
case2:
b=false;break;
}
}
}
}
运行结果
说明:
没有按书中的要求去求,但是这个程序功能更强,运用了菜单的方式,使用程序的人能求出不同精度的e值。
4.5程序代码
publicclassStringText
{
publicstaticvoidmain(String[]args)
{
Stringstr1="Iam";
Stringstr2="astudent";
Stringstr3="我是中国人";
StringBufferstr=newStringBuffer();
str.append(str1).append(str2).append(str3);
System.out.println(str);
System.out.println(str.charAt(8));
System.out.println(str.charAt(16));
}
}
运行结果
4.7程序代码
importjava.util.Scanner;
publicclassTriangle
{
voidprintTriangle(introw)
{
inti,j;
int[][]a=newint[row][];
for(i=0;i a[i]=newint[i+1]; for(i=0;i { a[i][0]=1; a[i][i]=1; } for(i=2;i { for(j=1;j { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } System.out.println("输出杨辉三角为: "); for(i=0;i { for(j=row-1;j>i;j--) System.out.print("\t"); for(j=0;j<=i;j++) { System.out.print(a[i][j]); if(i! =0) System.out.print("\t\t"); } System.out.print("\n"); } } publicstaticvoidmain(String[]args) { Scannerin=newScanner(System.in); Trianglenum=newTriangle(); System.out.print("请输入杨辉三角的行数: "); num.printTriangle(in.nextByte()); } } 运行结果 说明: 这个程序同样也具有一定的灵活行,随意输出杨辉三角的行数就就可以得到不同的杨辉三角,比如输入6,得到如下结果: 遇到的问题和解决方法 编写求e值的过程中题中只给出了最后一项的精度,这就要求我们用这一精度去先求出n来,求n就是要解决的问题之一,我用了一个循环,先判断符合不符合精度,如果大于所给精度让初值为1的i自加1;最后小于精度的那一项停止循环,随之计算出n。 编写杨辉三角的过程中主要是一个排布的过程,因为按题中要求,得输出题中的格式,所以必须在输出的格式中加空格或退格,第二个空格是第一个的二倍,为了看起来比较流畅,我是用加退格,得到运行结果。 心得体会 编写程序是一件令人欣悦的事,当你为解决某个问题绞尽脑汁最后又得到问题的解,那种心情只有自己才知道,我最大的心得就是通过编写简单的程序让我对编写程序有了更高的认识,逻辑上更清晰,增加了个人编程的小技巧,同时更有信心去编写更复杂的程序。 实验名称 实验二Java面向对象程序设计、异常处理和Applet小程序 实验目的和要求 1.掌握Java面向对象程序设计中类、继承、包和接口的概念和应用; 2.掌握类变量和实例变量、类方法和实例方法的特点、使用; 3.掌握异常的概念和Java异常处理机制,学会异常处理5个关键字的使用; 4.熟悉Applet小程序的特点和运行过程,掌握Applet程序中常用的方法。 实验内容 1.完成教材实验4中实验内容 (1) 2.完成教材实验4中实验内容(3)。 3.完成教材实验5中实验内容 (2),指出抛出异常的语句,属于何类异常。 4.完成教材实验5中实验内容(3)。 5.完成教材实验6中实验内容 (2) 主要仪器设备 台式或笔记本计算机 实验记录(写出实验内容中1,4,5的程序代码和运行结果)(可分栏或加页) 实验四内容 (1)的程序代码: importjava.io.*; importjava.util.Scanner; publicclassComplex { doublereal,imag; Complex() { } Complex(doublereal,doubleimag) { this.real=real; this.imag=imag; } voidaddComplex(Complexc1,Complexc2) { this.real=c1.real+c2.real; this.imag=c1.imag+c2.imag; System.out.println("("+this.real+","+this.imag+")"); } voidminusComplex(Complexc1,Complexc2) { this.real=c1.real-c2.real; this.imag=c1.imag-c2.imag; System.out.println("("+this.real+","+this.imag+")"); } voidmultiplyComplex(Complexc1,Complexc2) { this.real=c1.real*c2.real-c1.imag*c2.imag; this.imag=c1.real*c2.imag+c1.imag*c2.real; System.out.println("("+this.real+","+this.imag+")"); } publicstaticvoidmain(String[]args)throwsIOException { Scannerin=newScanner(System.in); System.out.print("请输入第一个复数的实部和虚部并用空格隔开: "); Complexc1=newComplex(in.nextDouble(),in.nextDouble()); System.out.print("\n请输入第二个复数的实部和虚部并用空格隔开: "); Complexc2=newComplex(in.nextDouble(),in.nextDouble()); Complexc=newComplex(); booleana=true; while(a) { System.out.println("请选择菜单: "); System.out.println("1.复数加法"); System.out.println("2.复数减法"); System.out.println("3.复数乘法"); System.out.println("4.退出"); switch(in.nextByte()) { case1: c.addComplex(c1,c2);break; case2: c.minusComplex(c1,c2);break; case3: c.multiplyComplex(c1,c2);break; case4: a=false;break; } } } } 运行结果 说明: 输入的数可以是在精度范围内的任何实数,先输入两个复数后然后就可以通过菜单提示的功能去选择是要做加,减,乘,还是退出程序,比书中的要求的相对灵活一些。 实验四内容(3)的程序代码: packagemymaths; publicinterfaceMaxMinValue { doubleseekMax(doublea,doubleb,doublec); doubleseekMin(doublea,doubleb,doublec); } packagemymaths; publicclassSeekMaxMinValueimplementsMaxMinValue { doublemax,min; publicdoubleseekMax(doublea,doubleb,doublec) { this.max=a>b? a: (b>c? b: c); returnthis.max; } publicdoubleseekMin(doublea,doubleb,doublec) { this.min=a a: (b b: c); returnthis.min; } } packagemymaths; importjava.util.Scanner; publicclassExample { publicstaticvoidmain(String[]args) { Scannerin=newScanner(System.in); MaxMinValuenum=newSeekMaxMinValue(); booleana=true; while(a) { System.out.println("请选择菜单: "); System.out.println("1.取最大值"); System.out.println("2.取最小值"); System.out.println("3.退出"); switch(in.nextByte()) { case1: System.out.print("输入要比较的三个数并用空格隔开: "); System.out.println("Max="+num.seekMax(in.nextDouble(),in.nextDouble(),in.nextDouble()));break; case2: System.out.print("输入要比较的三个数并用空格隔开: "); System.out.println("Min="+num.seekMin(in.nextDouble(),in.nextDouble(),in.nextDouble()));break; case3: a=false;break; } } } } 运行结果 说明: 有些繁琐,但根据提示进行就可以了 实验五内容(三)程序: importjava.util.Scanner; publicclassBank { Stringname; longremainder; Bank(Stringname,longremainder) { this.name=name; this.remainder=remainder; } longwithdraeal(longgetMoney)throwsInsufficientFundsException { try { this.remainder=this.remainder-getMoney; if(this.remainder<0) { thrownewInsufficientFundsException("尊敬的"+this.name+"您的余额不足"); } returnthis.remainder; } catch(InsufficientFundsExceptione) { System.out.println(e.getMessage()); returnthis.remainder=this.remainder+getMoney; } } publicstaticvoidmain(String[]args)throwsInsufficientFundsException { Scannerin=newScanner(System.in); System.out.print("请输入您的姓名和存款金额并用空格或回车隔开: "); Bankuser=newBank(in.next(),in.nextLong()); booleana=true; while(a) { System.out.println("请选择菜单: "); System.out.println("1.取款"); System.out.println("2.退出"); switch(in.nextByte()) { case1: { System.out.print("请输入您要取款的金额(输完之后按enter结束): "); System.out.println("您的卡上余额: "+user.withdraeal(in.nextLong())); };break; case2: a=false;break; } } } } classInsufficientFundsExceptionextendsException { publicInsufficientFundsException(Stringmsg) { super(msg); } } 运行结果 说明: 书中要求的也没有这么多功能,为了熟悉而加了这些必要的功能,从上述输入的数据中可以看书程序可以解决取钱以后卡上余额的显示,并且继续取还是取余额的钱,当余额不足是会提示信息,并且自己的余额不会变,还可以继续取钱。 实验六内容 (二)程序: importjava.applet.*; importjava.awt.*; importjava.awt.event.*; publicclassTest1extendsAppletimplementsActionListener { Buttonb=newButton("change"); Buttonb1=newButton("change1"); publicvoidinit() { add(b); add(b1); b.addActionListener(this); b1.addActionListener(this); } publicvoidpaint(Graphicsg) { Fontf=newFont("宋体",Font.PLAIN,18); g.setFont(f); g.setColor(Color.blue); g.drawString("Pleaselookatme.",0,30); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==b) { Graphicsg=getGraphics(); Fontf=newFont("楷体",Font.PLAIN,18); g.setFont(f); g.setColor(Color.black); g.drawString("Pleaselookatme.",0,60); } if(e.getSource()==b1) { Graphicsg=getGraphics(); Fontf=newFont("宋体",Font.PLAIN+Font.ITALIC,18); g.setFont(f); g.setColor(Color.green); g.drawString("Pleaselookatme.",0,90); } } } 运行结果 说明: 按钮change按下出来黑字体,按钮change1按下出来绿色字体。 遇到的问题和解决方法 编程过程中遇到结果不一致的情况比较多,比如说银行系统中取走钱后余额是正确的,在取钱时余额又回到了刚开始存的钱,解决这些问题中用的最多的是this的变化,在编写复数是this用的相对也是比较多的,显示了其较高的灵活性! 心得体会 在编完银行系统时感觉很有成就感,在调试过程中都能按自己的要求去执行,再次提升了我个人对编程的兴趣,小程序我感觉编写的还不够好,只是做到了简单的要求,我想再给我点儿时间会编的更好! 实验名称 实验三图形用户界面、多线程和多媒体编程 实验目的和要求 1.掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘事件的处理;掌握布局控制的方法; 2.掌握线程的概念、线程的生命周期;掌握采用扩展Thread类和实现Runnable接口的多线程编程方法; 3.掌握Java中声音播放、图形绘制和显示图像的程序设计方法; 实验内容 1.编写一个Applet程序响应鼠标事件,当鼠标事件发生时,在状态栏显示相应的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 Java 实验 报告