太原理工大学Java实验报告

更新时间:2023-04-22 18:13:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

包含课后全部代码与个人感受,希望可以对读者有所启发

实验由本人当时亲自完成 仅供参考,希望可以帮助大家

本科实验报告

课程名称: Java程序设计B

实验项目: Java语言基础编程和面向对象设计

实验地点: 逸夫楼501

专业班级:学号:

学生姓名: 氣宇軒昂

指导教师:

2012年 13月 13日

包含课后全部代码与个人感受,希望可以对读者有所启发

实验名称 实验目的和要求 1. 2. 3. 4.

实验一

Java 环境搭建和 Java 语言基础编程

掌握 JDK、Eclipse 的下载和安装,并熟练使用 API 帮助文档; 学会 Java Application 程序和 Java Applet 程序的编制、编译和运行; 熟练掌握 Java 程序流程控制语句的使用; 熟练掌握 Java 语言数组的使用、字符串以及字符串处理方法的使用。

实验内容 1. 下载并安装最新版本的 JDK 和 Eclipse,设置环境变量,下载 API 帮助文档。 2. 设计 Java Application 程序,输出“我叫×××,我编写的 Java Application 程序运 行通过了” ,分别在命令提示符和 Eclipse 环境中编译、运行。 3. 完成习题 2.7 的编程、调试与运行。 4. 使用 for 循环语句输出习题 3.5 中的图案。 5. 完成习题 3.9 的编程、调试与运行。 6. 完成习题 4.5 和 4.7 的编程、调试与运行。 主要仪器设备 台式或笔记本计算机

实验记录(写出实验内容中 3,5,6 的程序代码和运行结果)(可分栏或加页) 2.7 程序代码import java.util.Scanner; public class DataType { public static void main(String[] args) { Scanner in=new Scanner(System.in); System.out.print("请输入一个long型数据(输完按enter结束) :"); long a=in.nextLong(); System.out.print("请输入一个float型数据(输完按enter结束) :"); float b=in.nextFloat(); System.out.print("请输入一个double型数据(输完按enter结束) :"); double c=in.nextDouble(); System.out.println("long:"+a); System.out.println("float:"+b); System.out.println("double:"+c); } }

运行结果

包含课后全部代码与个人感受,希望可以对读者有所启发

3.9 程序代码import java.util.Scanner; public class ValueFore { int n; ValueFore() { this.n=calculateN(); } double stackBy(int n) { int i; double s=1; for(i=1;i<=n;i++) { s*=i; } return s; } double overlap() { int i; double sum=1; for(i=1;i<=this.n;i++) { sum+=1/stackBy(i); } return sum; } int calculateN() { Scanner in=new Scanner(System.in); int i=1; double a=in.nextDouble(); while(1/stackBy(i)>a) {

包含课后全部代码与个人感受,希望可以对读者有所启发

i++; } return i; } public static void main(String[] args) { Scanner in=new Scanner(System.in); boolean b=true; while(b) { System.out.println("请选择菜单:"); System.out.println(" 1.计算不同精度的e值"); System.out.println(" 2.退出"); switch(in.nextByte()) { case 1: { System.out.println("请输入精度(例如:1e-3,表示0.001) :"); ValueFore a=new ValueFore(); System.out.println("e="+a.overlap()); };break; case 2:b=false;break; } } } }

运行结果

说明:没有按书中的要求去求,但是这个程序功能更强,运用了菜单的方式,使用程序的

人能求

包含课后全部代码与个人感受,希望可以对读者有所启发

出不同精度的 e 值。

4.5 程序代码public class StringText { public static void main(String[] args) { String str1="I am"; String str2="a student"; String str3="我是中国人"; StringBuffer str=new StringBuffer(); 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 程序代码import java.util.Scanner;

public class Triangle { void printTriangle(int row) { int i,j; int[][] a=new int[row][]; for(i=0;i<row;i++) a[i]=new int[i+1]; for(i=0;i<row;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<row;i++) { for(j=1;j<i;j++)

包含课后全部代码与个人感受,希望可以对读者有所启发

{ a[i][j]=a[i-1][j-1]+a[i-1][j]; } } System.out.println("输出杨辉三角为:"); for(i=0;i<row;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"); } } public static void main(String[] args) { Scanner in=new Scanner(System.in); Triangle num=new Triangle(); System.out.print("请输入杨辉三角的行数:"); num.printTriangle(in.nextByte()); } }

运行结果

说明:这个程序同样也具有一定的灵活行,随意输出杨辉三角的行数就就可以得到不同的杨辉三 角,比如输入 6,得到如下结果:

包含课后全部代码与个人感受,希望可以对读者有所启发

遇到的问题和解决方法编写求 e 值的过程中题中只给出了最后一项的精度, 这就要求我们用这一精度去先求出 n 来, 求 n 就是要解决的问题之一,我用了一个循环,先判断符合不符合精度,如果大于所给精度让初 值为 1 的 i 自加 1;最后小于精度的那一项停止循环,随之计算出 n。 编写杨辉三角的过程中主要是一个排布的过程,因为按题中要求,得输出题中的格式,所以 必须在输出的格式中加空格或退格,第二个空格是第一个的二倍,为了看起来比较流畅,我是用 加退格,得到运行结果。

心得体会编写程序是一件令人欣悦的事,当你为解决某个问题绞尽脑汁最后又得到问题的解,那种心 情只有自己才知道,我最大的心得就是通过编写简单的程序让我对编写程序有了更高的认识,逻 辑上更清晰,增加了个人编程的小技巧,同时更有信心去编写更复杂的程序。

包含课后全部代码与个人感受,希望可以对读者有所启发

实验名称 实验目的和要求 1. 2. 3. 4. 1. 2. 3. 4. 5.

实验二

Java 面向对象程序设计、异常处理和 Applet 小程序

掌握 Java 面向对象程序设计中类、继承、包和接口的概念和应用; 掌握类变量和实例变量、类方法和实例方法的特点、使用; 掌握异常的概念和 Java 异常处理机制,学会异常处理 5 个关键字的使用; 熟悉 Applet 小程序的特点和运行过程,掌握 Applet 程序中常用的方法。 完成教材实验 4 中实验内容(1) 完成教材实验 4 中实验内容(3)。 完成教材实验 5 中实验内容(2),指出抛出异常的语句,属于何类异常。

完成教材实验 5 中实验内容(3)。 完成教材实验 6 中实验内容(2) 台式或笔记本计算机

实验内容

主要仪器设备

实验记录(写出实验内容中 1,4,5 的程序代码和运行结果)(可分栏或加页) 实验四内容(1)的程序代码:import java.io.*; import java.util.Scanner; public class Complex { double real,imag; Complex() { } Complex(double real,double imag) { this.real=real; this.imag=imag; } void addComplex(Complex c1,Complex c2) { this.real=c1.real+c2.real; this.imag=c1.imag+c2.imag; System.out.println("("+this.real+","+this.imag+")"); } void minusComplex(Complex c1,Complex c2) { this.real=c1.real-c2.real;

包含课后全部代码与个人感受,希望可以对读者有所启发

this.imag=c1.imag-c2.imag; System.out.println("("+this.real+","+this.imag+")"); } void multiplyComplex(Complex c1,Complex c2) { 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+")"); } public static void main(String[] args) throws IOException { Scanner in = new Scanner(System.in); System.out.print("请输入第一个复数的实部和虚部并用空格隔开:"); Complex c1=new Complex(in.nextDouble(),in.nextDouble()); System.out.print("\n请输入第二个复数的实部和虚部并用空格隔开:"); Complex c2=new Complex(in.nextDouble(),in.nextDouble()); Complex c=new Complex(); boolean a=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()) { case 1:c.addComplex(c1, c2);break; case 2:c.minusComplex(c1, c2);break; case 3:c.multiplyComplex(c1, c2);break; case 4:a=false;break; } } } }

运行结果

包含课后全部代码与个人感受,希望可以对读者有所启发

说明:输入的数可以是在精度范围内的任何实数,先输入两个复数后然后就可以通过菜单提示的 功能去选择是要做加,减,乘,还是退出程序,比书中的要求的相对灵活一些。

实验四内容(3)的程序代码:package mymaths; public interface MaxMinValue { double seekMax(double a,double b,double c); double seekMin(double a,double b,double c); } package mymaths; public class SeekMaxMinValue implements MaxMinValue { double max,min; public double seekMax(double a,double b,double c) { this.max=a>b?a:(b>c?b:c); return this.max; } public double seekMin(double a,double b,double c) {

包含课后全部代码与个人感受,希望可以对读者有所启发

this.min=a<b?a:(b<c?b:c); return this.min; } } package mymaths; import java.util.Scanner; public class Example { public static void main(String[] args) { Scanner in=new Scanner(System.in); MaxMinValue num = new SeekMaxMinValue(); boolean a=true; while(a) { System.out.println("请选择菜单:"); System.out.println(" 1.取最大值"); System.out.println(" 2.取最小值"); System.out.println(" 3.退出"); switch(in.nextByte()) { case 1: System.out.print("输入要比较的三个数并用空格隔开:"); System.out.println("Max="+num.seekMax(in.nextDouble(),in.nextDouble(),in .nextDouble())

);break; case 2: System.out.print("输入要比较的三个数并用空格隔开:"); System.out.println("Min="+num.seekMin(in.nextDouble(),in.nextDouble(),in .nextDouble()));break; case 3:a=false;break; } } } }

运行结果

包含课后全部代码与个人感受,希望可以对读者有所启发

说明:有些繁琐,但根据提示进行就可以了

实验五内容(三)程序:import java.util.Scanner; public class Bank { String name; long remainder; Bank(String name,long remainder) { =name; this.remainder=remainder; } long withdraeal(long getMoney) throws InsufficientFundsException { try { this.remainder=this.remainder-getMoney; if(this.remainder<0) { throw new InsufficientFundsException("尊敬的"++"您的余 额不足"); } return this.remainder; } catch(InsufficientFundsException e) { System.out.println(e.getMessage());

包含课后全部代码与个人感受,希望可以对读者有所启发

return this.remainder=this.remainder+getMoney; } } public static void main(String[] args) { Scanner in=new Scanner(System.in); throws InsufficientFundsException

System.out.print("请输入您的姓名和存款金额并用空格或回车隔开:"); Bank user=new Bank(in.next(),in.nextLong()); boolean a=true; while(a) { System.out.println("请选择菜单:"); System.out.println(" 1.取款"); System.out.println(" 2.退出"); switch(in.nextByte()) { case 1: { System.out.print("请输入您要取款的金额(输完之后按enter结束) : "); System.out.println(" 您 的 "+user.withdraeal(in.nextLong())); };break; case 2:a=false;break; } } } } class InsufficientFundsException extends Exception { public InsufficientFundsException(String msg) { super(msg); } } 卡 上 余 额 :

运行结果

包含课后全部代码与个人感受,希望可以对读者有所启发

说明:书中要求的也没有这么多功能,为了熟悉而加了这些必要的功能,从上述输入的数据中可 以看书程序可以解决取钱以后卡上余额的显示,并且继续取还是取余额的钱,当余额不足是会提 示信息,并且自己的余额不会变,还可以继续取钱。

实验六内容(二)程序:import java.applet.*; import java.awt.*; import java.awt.event.*; public class Test1 extends Applet implements ActionListener { Button b=new Button("change"); Button b1=new Button("change1"); public void init() { add(b); add(b1); b.addActionListener(this); b1.addActionListener(this); }

public void paint(Graphics g) { Font f=new Font("宋体",Font.PLAIN,18);

包含课后全部代码与个人感受,希望可以对读者有所启发

g.setFont(f); g.setColor(Color.blue); g.drawString("Please look at me.", 0, 30); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b) { Graphics g = getGraphics(); Font f=new Font("楷体_GB2312",Font.PLAIN,18); g.setFont(f); g.setColor(Color.black); g.drawString("Please look at me.", 0, 60); } if(e.getSource()==b1) { Graphics g = getGraphics(); Font f=new Font("宋体",Font.PLAIN+Font.ITALIC,18); g.setFont(f); g.setColor(Color.green); g.drawString("Please look at me.", 0, 90); } } }

运行结果

说明:按钮 change 按下出来黑字体,按钮 change1 按下出来绿色字体。

包含课后全部代码与个人感受,希望可以对读者有所启发

遇到的问题和解决方法编程过程中遇到结果

不一致的情况比较多,比如说银行系统中取走钱后余额是正确的,在取 钱时余额又回到了刚开始存的钱,解决这些问题中用的最多的是 this 的变化,在编写复数是 this 用的相对也是比较多的,显示了其较高的灵活性!

心得体会在编完银行系统时感觉很有成就感, 在调试过程中都能按自己的要求去执行, 再次提升了我 个人对编程的兴趣,小程序我感觉编写的还不够好,只是做到了简单的要求,我想再给我点儿时 间会编的更好!

包含课后全部代码与个人感受,希望可以对读者有所启发

实验名称 实验目的和要求

实验三

图形用户界面、多线程和多媒体编程

1. 掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘 事件的处理;掌握布局控制的方法; 2. 掌握线程的概念、线程的生命周期;掌握采用扩展 Thread 类和实现 Runnable 接 口的多线程编程方法; 3. 掌握 Java 中声音播放、图形绘制和显示图像的程序设计方法; 实验内容 1. 编写一个 Applet 程序响应鼠标事件,当鼠标事件发生时,在状态栏显示相应的状 态信息(使用 showStatus(字符串)方法)。 2. 完成教材实验 7 中实验内容(3)。 3. 完成教材实验 8 中实验内容(1)(2)。 4. 完成教材实验 8 中实验内容(3)。 5. 编程绘制直线、各种矩形、各种椭圆及多边形。 6. 编程显示各种字体、字型、字号和不同颜色的文字。 主要仪器设备 台式或笔记本计算机

实验记录(写出实验内容中 1,2,5 的程序代码和运行结果)(可分栏或加页) 实验内容一程序:import java.applet.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class MouseText extends Applet { Panel p1,p2; TextArea f; public void init() { setSize(800,600); setLayout(new GridLayout(1,2)); p1=new Panel(); p2=new Panel(); p2.setLayout(new BorderLayout()); f=new TextArea(); p2.add(f); add(p1); add(p2); p1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e)

包含课后全部代码与个人感受,希望可以对读者有所启发

{ int x=e.getX(); int y=e.getY(); f.append("Push at ("+x+","+y+")\n"); } }); } }

运行结果

说明:当鼠标指向左边区域时,相应的坐标位置打印在文本区域。

实验七实验内容(三)程序:import java.awt.*; import java.awt.event.*; public class ClickMe { Frame f; Button btn; int a=1; public void chushihua()

包含课后全部代码与个人感受,希望可以对读者有所启发

{ f=new Frame(); f.setSize(400,300); f.setLayout(null); btn=new Button("Click Me"); btn.setLocation(150, 120); btn.setSize(110,30); f.add(btn); f.setVisible(true); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { a++; if(e.getSource()==btn) { if(a%2==0) { btn.setLabel("Click Me Again"); } else { btn.setLabel("Click Me"); } } } }); } public static void main(String[] args) { ClickMe a=new ClickMe(); a.chushihua(); } }

运行结果:

本文来源:https://www.bwwdw.com/article/rw2q.html

Top