太原理工大学Java实验报告

更新时间:2024-03-06 14:41:01 阅读量: 综合文库 文档下载

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

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

本科实验报告

课程名称: Java程序设计B

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

实验地点: 逸夫楼501

专业班级: 0000 学号: 00000000

学生姓名: 氣宇軒昂

指导教师:

2012年 13月 13日

实验名称 实验目的和要求 实验一 Java环境搭建和Java语言基础编程 1. 掌握JDK、Eclipse的下载和安装,并熟练使用API帮助文档; 2. 学会Java Application程序和Java Applet程序的编制、编译和运行; 3. 熟练掌握Java程序流程控制语句的使用; 4. 熟练掌握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(\+a); System.out.println(\+b); System.out.println(\+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(\计算不同精度的e值\); System.out.println(\退出\); switch(in.nextByte()) { case 1: { } System.out.println(\请输入精度(例如:1e-3,表示0.001):\); ValueFore a=new ValueFore(); System.out.println(\+a.overlap()); };break; case 2:b=false;break; 运行结果 说明:没有按书中的要求去求,但是这个程序功能更强,运用了菜单的方式,使用程序的人能求出不同精度的e值。 4.5程序代码 public class StringText { public static void main(String[] args) { String str1=\; String str2=\; } } 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

} { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } System.out.println(\输出杨辉三角为:\); for(i=0;ii;j--) System.out.print(\); for(j=0;j<=i;j++) { System.out.print(a[i][j]); if(i!=0) System.out.print(\); } System.out.print(\); } } 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. 实验二 Java面向对象程序设计、异常处理和Applet小程序 实验目的和要求 掌握Java面向对象程序设计中类、继承、包和接口的概念和应用; 掌握类变量和实例变量、类方法和实例方法的特点、使用; 掌握异常的概念和Java异常处理机制,学会异常处理5个关键字的使用; 熟悉Applet小程序的特点和运行过程,掌握Applet程序中常用的方法。 实验内容 1. 完成教材实验4中实验内容(1) 2. 完成教材实验4中实验内容(3)。 3. 完成教材实验5中实验内容(2),指出抛出异常的语句,属于何类异常。 4. 完成教材实验5中实验内容(3)。 5. 完成教材实验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(\请输入第二个复数的实部和虚部并用空格隔开:\); Complex c2=new Complex(in.nextDouble(),in.nextDouble()); Complex c=new Complex(); boolean a=true; while(a) { } System.out.println(\请选择菜单:\); System.out.println(\复数加法\); System.out.println(\复数减法\); System.out.println(\复数乘法\); System.out.println(\退出\); 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

遇到的问题和解决方法 编程过程中遇到结果不一致的情况比较多,比如说银行系统中取走钱后余额是正确的,在取钱时余额又回到了刚开始存的钱,解决这些问题中用的最多的是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(\+x+\+y+\); } }); 运行结果 说明:当鼠标指向左边区域时,相应的坐标位置打印在文本区域。 实验七实验内容(三)程序: 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(\); 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(\); } else { btn.setLabel(\); } } } }); } public static void main(String[] args) { ClickMe a=new ClickMe(); a.chushihua(); } 运行结果: 点击后: 再点击后: 说明:此程序是通过修改标签来达到书中的目的的,点击后将会不停地再变。 实验内容五程序: import java.awt.*; import javax.swing.*; import java.awt.event.*;

public class GraphicsText extends JFrame implements ActionListener { JPanel p1,p2; JLabel lab1,lab2,lab3; JTextField f1,f2,f3; String str1,str2,str3; int x,y; public void initJ() { str1=\直线\; str2=\圆\; str3=\矩形\; setSize(600,300); GridLayout g2=new GridLayout(1,2); setLayout(g2); p1=new JPanel(); p2=new JPanel(); add(p1); add(p2); setp1(); setVisible(true); } public void setp1() { GridLayout g1=new GridLayout(6,1); p1.setLayout(g1); Font fn1=new Font(\宋体\,Font.BOLD,25); lab1=new JLabel(\请输入要画的几何图形:\); lab1.setFont(fn1); lab2=new JLabel(\提示:只能输入直线,圆,矩形\); p1.add(lab1); p1.add(lab2); f1=new JTextField(); f1.setFont(fn1); f1.addActionListener(this); p1.add(f1); } public void actionPerformed(ActionEvent e) { if(e.getSource()==f1) { if(str1.equals(f1.getText())) { p2.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { x=e.getX(); y=e.getY(); } public void mouseReleased(MouseEvent e) { Graphics g=p2.getGraphics(); g.drawLine(x,y,e.getX(),e.getY()); } }); } if(str2.equals(f1.getText())) { p2.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { x=e.getX(); y=e.getY(); } public void mouseReleased(MouseEvent e) { Graphics g=p2.getGraphics(); g.drawOval(x,x,e.getX()-x,e.getX()-x); } }); } if(str3.equals(f1.getText())) { p2.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { x=e.getX(); y=e.getY(); } } public void mouseReleased(MouseEvent e) { Graphics g=p2.getGraphics(); g.drawRect(x,x,e.getX()-x,e.getX()-x); } }); } } } public static void main(String[] args) { GraphicsText gt=new GraphicsText(); gt.initJ(); } 运行结果 说明:此程序由鼠标事件完成,有一定局限性。 遇到的问题和解决方法 遇到的问题还是挺多,监听器使用不够熟练,思路不够清晰,总是出现错误。 心得体会 总的来说这次实验不像前两次那么有成就感,总感觉少了点什么,总觉得自己想的没能够按要求达到目的,或者说总感觉变得程序漏洞百出,好好加油吧,我觉得还是对图形界面的编程不够熟悉,才学了一个月,我还有很大发展空间,好好记住Java中常用的东西,练得多了才能更加熟练!

实验名称 1. 2. 3. 4. 1. 2. 3. 4. 实验四 网络、数据库和输入/输出流编程 实验目的和要求 掌握URL的概念和编程方法,掌握Socket的概念和编程方法、 了解JDBC的概念和工作原理,掌握使用JDBC实现简单的数据库管理; 了解流的概念和分类,掌握两种基本输入/输出流类的使用; 掌握Java文件类的使用。 改写教材例11.10的程序,使用图形界面实现多用户聊天程序。 完成教材实验11中的实验内容(1)~(4)。 利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性。 编写程序,利用Java的字符流文件输入/输出类实现将源文件复制到另一文件。 实验内容 主要仪器设备 台式或笔记本计算机 实验记录(写出实验内容中1,2,4的程序代码和运行结果)(可分栏或加页) 实验1的程序及运行结果 程序如下: import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class ZCX4_Server { public static void main(String[] args) { Frame f=new Frame(\); f.setSize(600,400); f.setLayout(new GridLayout(3,1)); Panel p1=new Panel(); p1.setLayout(new BorderLayout()); Panel p2=new Panel(); p2.setLayout(new BorderLayout()); Panel p3=new Panel(); p3.setLayout(null); f.add(p1); f.add(p2); f.add(p3); final TextArea txt1=new TextArea(); p1.add(txt1,\); final TextArea txt2=new TextArea(); p2.add(txt2,\); final Button btn=new Button(\发送\); btn.setSize(80, 30); btn.setLocation(260, 60); p3.add(btn); f.setVisible(true); try { ServerSocket server=new ServerSocket(4444); Socket client=server.accept(); BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream())); final PrintWriter os=new PrintWriter(client.getOutputStream()); txt1.append(\客户:\+is.readLine()+\); txt2.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_ENTER) { txt1.append(\服务器:\+txt2.getText()+\); os.println(txt2.getText()); os.flush(); txt2.setText(\); } } }); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource()==btn) { txt1.append(\服务器::\+txt2.getText()+\); os.println(txt2.getText()); os.flush(); txt2.setText(\); } } }); while(!txt2.getText().equals(\)) { txt1.append(\客户:\+is.readLine()+\); } os.close(); is.close(); client.close(); } catch(Exception e) { System.out.println(\+e); } } } import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; public class ZCX4_Client { public static void main(String[] args) { Frame f=new Frame(\); f.setSize(600,400); f.setLayout(new GridLayout(3,1)); Panel p1=new Panel(); p1.setLayout(new BorderLayout()); Panel p2=new Panel(); p2.setLayout(new BorderLayout()); Panel p3=new Panel(); p3.setLayout(null); f.add(p1); f.add(p2); f.add(p3); final TextArea txt1=new TextArea(); p1.add(txt1,\); final TextArea txt2=new TextArea(); p2.add(txt2,\); final Button btn=new Button(\发送\); btn.setSize(80, 30); btn.setLocation(260, 60); p3.add(btn); f.setVisible(true); try { Socket client=new Socket(\,4444); BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream())); final PrintWriter os=new PrintWriter(client.getOutputStream()); txt2.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_ENTER) { txt1.append(\我自己:\+txt2.getText()+\); os.println(txt2.getText()); os.flush(); txt2.setText(\); } } }); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource()==btn) { txt1.append(\我自己:\+txt2.getText()+\); os.println(txt2.getText()); os.flush(); txt2.setText(\); } } }); while(!txt2.getText().equals(\)) { txt1.append(\服务器:\+is.readLine()+\); } os.close(); is.close(); client.close(); } catch(Exception e) { System.out.println(\+e); } } } 运行结果: 说明:先运行Server程序再运行client程序,然后在下边的文本域中输入要输入的信息,按下enter或发送发送消息。

实验2: 源代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class StudentSql { public static void main(String[] args){ } } class fwin extends JFrame implements ActionListener{ JTable table; JButton bt1,bt2,bt3,bt4; Object a[][]; Connection conn; Statement stm; ResultSet rs; Object columnName[]={\学号\,\姓名\,\性别\,\年龄\,\班级\}; int i=0; fwin(){ super(\学生数据库查询\); a=new Object[50][5]; table=new JTable(a,columnName); setSize(550,550); bt1=new JButton(\浏览表\); bt2=new JButton(\添加学生信息\); bt3=new JButton(\年龄(>18)\); bt4=new JButton(\退出\); bt1.addActionListener(this); bt2.addActionListener(this); bt3.addActionListener(this); bt4.addActionListener(this); Container con=getContentPane(); con.setLayout(new FlowLayout()); con.add(bt1); con.add(bt2); con.add(bt3); con.add(bt4); new fwin(); } Container container=getContentPane(); container.add(new JScrollPane(table),BorderLayout.CENTER); setVisible(true); validate(); addWindowListener(new WindowAdapter(){ public void closing(WindowEvent e){ } System.exit(0); }); @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==bt1){ while(i>=0){ // 清空上次查询结果 } i=0; try { } try{ conn=DriverManager.getConnection(\); stm=conn.createStatement(); rs=stm.executeQuery(\); while(rs.next()){ String id=rs.getString(\学号\); String name=rs.getString(\姓名\); String sex=rs.getString(\性别\); String age=rs.getString(\年龄\); String iclass=rs.getString(\班级\); a[i][0]=id; a[i][1]=name; a[i][2]=sex; Class.forName(\); // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e1) { a[i][0]=\; a[i][1]=\; a[i][2]=\; a[i][3]=\; a[i][4]=\; i--; } } a[i][3]=age; a[i][4]=iclass; i++; conn.close(); repaint(); }catch(SQLException e2){} else if(e.getSource()==bt2){ } else if(e.getSource()==bt3){ while(i>=0){ // 清空上次查询结果 } i=0; try { } try{ conn=DriverManager.getConnection(\); stm=conn.createStatement(); rs=stm.executeQuery(\年龄>18\); while(rs.next()){ String id=rs.getString(\学号\); String name=rs.getString(\姓名\); String sex=rs.getString(\性别\); int age=rs.getInt(\年龄\); String iclass=rs.getString(\班级\); a[i][0]=id; a[i][1]=name; a[i][2]=sex; a[i][3]=String.valueOf(age); a[i][4]=iclass; Class.forName(\); // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e1) { a[i][0]=\; a[i][1]=\; a[i][2]=\; a[i][3]=\; a[i][4]=\; i--; new tianjia(); //新生成一个添加的窗口 } } } } i++; conn.close(); repaint(); }catch(SQLException e2){} else if(e.getSource()==bt4){ } dispose(); class tianjia extends JFrame implements ActionListener{ TextField tid,tname,tsex,tage,tclass; Label lid,lname,lsex,lage,lclass; Button btn; tianjia(){ setLayout(null); btn=new Button(\添加\); tid=new TextField(); tname=new TextField(); tsex=new TextField(); tage=new TextField(); tclass=new TextField(); lid=new Label(\学号\); lname=new Label(\姓名\); lsex=new Label(\性别\); lage=new Label(\年龄\); lclass=new Label(\班级\); add(lid); add(tid); add(lname); add(tname); add(lsex); add(tsex); add(lage); add(tage); add(lclass); add(tclass); add(btn); lid.setBounds(10, 10, 70, 25); tid.setBounds(90, 10, 220, 25); lname.setBounds(10, 40, 70, 25); tname.setBounds(90, 40, 220, 25); lsex.setBounds(10, 70, 70, 25); tsex.setBounds(90, 70, 220, 25); lage.setBounds(10, 100, 70, 25); tage.setBounds(90, 100, 220, 25); lclass.setBounds(10, 130, 70, 25); tclass.setBounds(90, 130, 220, 25); btn.setBounds(130, 160, 70, 25); btn.addActionListener(this); setSize(340,250); setBackground(Color.white); setVisible(true); validate(); addWindowListener(new WindowAdapter(){ public void closing(WindowEvent e){ } System.exit(0); }); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String sid=tid.getText(); String sname=tname.getText(); String ssex=tsex.getText(); String sage=tage.getText(); String sclass=tclass.getText(); String insertstr=\into dbo.student values\+\+\+sid+\+\+\+sname+\+\+\+ssex+\+\+\+sage+\+\+\+sclass+\+\; Connection conn; Statement stm; try { } Class.forName(\); // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e1) {

} } try{ conn=DriverManager.getConnection(\); stm=conn.createStatement(); stm.executeUpdate(insertstr); conn.close(); //关闭连接 //清空text field tid.setText(\); tname.setText(\); tsex.setText(\); tage.setText(\); tclass.setText(\); JOptionPane.showMessageDialog(this, \添加成功\,\确认信息\,JOptionPane.INFORMATION_MESSAGE); }catch(SQLException e1){ } System.out.println(\+e1); tid.setText(\); tname.setText(\); tsex.setText(\); tage.setText(\); tclass.setText(\); JOptionPane.showMessageDialog(this, \添加失败\, \失败信息\, JOptionPane.INFORMATION_MESSAGE); 运行结果: 点击浏览表 点击添加学生信息 输入内容 点击按钮 再次添加 点击年龄大于18 实验4的程序及运行结果 程序如下: import java.io.*; public class ZCX5_Text

{ } public static void main(String[] args)throws Exception { FileOutputStream f=new FileOutputStream(\); OutputStreamWriter osw=new OutputStreamWriter(f); BufferedWriter b=new BufferedWriter(osw); b.write(\); b.close(); FileInputStream ff=new FileInputStream(\); InputStreamReader isw=new InputStreamReader(ff); BufferedReader bb=new BufferedReader(isw); FileOutputStream fff=new FileOutputStream(\); OutputStreamWriter oswf=new OutputStreamWriter(fff); BufferedWriter bf=new BufferedWriter(oswf); bf.write(bb.readLine()); bf.close(); } 运行结果: 出现两个文本文件如下: 打开文件如下: 说明:此程序先创建了1.txt,然后往里边写入内容,写入后建立了一个输入流,再创建了一个新文件2.txt,把刚读入的内容写进了2.txt完成了复制。 遇到的问题和解决方法 在编写聊天程序的时候遇到无法再文本域中动态的输入字符串,所以编出来的程序不是那么直观好看,似乎还有一点儿别扭,在网上以及API文档中找了很多方法都没有文本域的流,但是最后用事件完成了此种想法,因为发送信息是随时发送的,不管怎么样对套接字以及输入输出流有了更大的体会,在今后不断完善的时候一定会注意这些问题。 心得体会 四个实验基本都完成了,总体来说给我的感觉是有点儿乱,但是我也在不停的总结Java的规律和它自身的体系结构,我想在今后不断完善的学习中我会把Java吃透,在本次试验中其实问题还是不少,对图形界面的熟练程序不足,各种监听器的使用还没有到那种应用自如的地步,还有各种流,对象的流还没有去练习,以及用Appletx小程序去完整的播放音乐,加载图片,加载动画...总之,还有很多不足,也许只是在拔了Java的一点儿小皮,各种东西还没用的上,希望在以后的学习中更多的了解,体会其中的奥妙,再者我想说的是,到目前为止,我已经学了很多计算机语言了,它们大部分都类似,各有各的特点,用了C#之后感觉Java的图形界面不值一提,也许vb的效果会更好,但是他们监听的思路都是一致的,我想学了Java后对我以后学各种语言都有很大帮助!

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

Top