湖南大学JAV第三次作业.docx
- 文档编号:11700105
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:20
- 大小:243.68KB
湖南大学JAV第三次作业.docx
《湖南大学JAV第三次作业.docx》由会员分享,可在线阅读,更多相关《湖南大学JAV第三次作业.docx(20页珍藏版)》请在冰豆网上搜索。
湖南大学JAV第三次作业
第六章Java输入输出
1、说明程序功能:
importjava.io.*;
publicclassCharWrite{
publicstaticvoidmain(Stringargs[]){
try{
FileWriterfw=newFileWriter("charset.txt");
for(inti=32;i<126;i++)
fw.write(i);
fw.close();
}catch(IOExceptione){}
}
}
答:
向文件charset.txt中输入ASCII码从32到126共94个字符。
2、先用随机函数产生出任意的20个整数,再按由小到大的顺序排序,然后将结果写入一个文件中,最后从该文件中读出后显示出来。
请分别用顺序文件和随机文件的读写形式进行编程测试。
代码:
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.Random;
publicclassRandNum{
publicstaticvoidmain(Stringargs[]){
Randomrand=newRandom();//实例化一个产生随机数的类
int[]num=newint[20];//定义一个整型数组,用来存储产生的随机数
intr=0;//随机数
for(inti=0;i r=rand.nextInt(1000);//产生一个1000以内的随机数 //放入数组 num[i]=r; } intk; //进行排序 for(inti=0;i for(intj=0;j if(num[i] k=num[i]; num[i]=num[j]; num[j]=k; } } } RandNumrn=newRandNum(); //写入文件 rn.WriteFile("src/123",num); //读取文件 int[]x=rn.ReadFile("src/123"); //读取的数组 for(inti=0;i System.out.print(x[i]+"\t"); if(i%5==4) System.out.println(); } } /** *读取文件的方法 *@parampath */ publicint[]ReadFile(Stringpath){ inta[]=null; try{ //实例化一个File输入流对象 InputStreamis=newFileInputStream(path); //实例化一个Buffer输入流对象 BufferedInputStreambs=newBufferedInputStream(is); intlength=bs.available(); //读取第一个为数组大小 intk=bs.read(); //用来计数 intcount=0; //实例化数组 a=newint[k]; Stringstr="";//中间变量 for(inti=0;i //继续读取 k=bs.read(); //若读取的不是换行 if(k! =13&&k! =10&&k! =-1){ //读取到空格 while(k! =32){ str+=(char)k; k=bs.read(); } //把字符串里的数字转换成整型放入数组中 a[count]=Integer.parseInt(str); count++; str="";//清空字符串 } } is.close(); bs.close(); System.out.println("读取成功"); }catch(FileNotFoundExceptione){ System.out.println("找不到指定文件,请确认文件路径"); }catch(IOExceptione){ e.printStackTrace(); } returna; } /** *写入文件 *@parampath路径 *@parama数组 */ publicvoidWriteFile(Stringpath,int[]a){ try{ //实例化一个File输出流 OutputStreamos=newFileOutputStream(path); //实例化一个Buffered输出流 BufferedOutputStreambos=newBufferedOutputStream(os); //写入数组大小 bos.write(a.length); //写入换行符 bos.write(13); bos.write(10); //循环写入数组的值 for(inti=0;i bos.write(Integer.toString(a[i]).getBytes()); //写入1个空格 bos.write(32); bos.flush(); } bos.close(); os.close(); System.out.println("写入成功"); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } } 截图 3、统计一个文本文件中单词的个数。 文本文件的名字从命令行中获得。 代码 importjava.io.FileReader; importjava.io.IOException; importjava.util.StringTokenizer; publicclasstest{ publicstaticvoidmain(String[]args)throwsIOException{ FileReaderfileReader=newFileReader(args[0]); StringBufferstringBuffer=newStringBuffer(); char[]b=newchar[506]; while(fileReader.read(b,0,505)! =-1){ stringBuffer.append(b); } StringTokenizerstringTokenizer=newStringTokenizer(stringBuffer.toString()); System.out.println("文本文件中单词的个数为: "+stringTokenizer.countTokens()); } } 结果截图 第七章Java图形用户界面 1、阅读下面的程序,回答问题。 importjava.awt.*; importjavax.swing.*; publicclassTextendsJFrame{ publicT(){ super("GridLayout"); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,3)); con.add(newJButton("a")); con.add(newJButton("b")); con.add(newJButton("c")); con.add(newJButton("d")); con.add(newJButton("e")); con.add(newJButton("f")); setSize(200,80); setVisible(true); } publicstaticvoidmain(Stringargs[]){ newT(); } } 画图表示程序运行后的图形界面。 如果程序通过实现某个接口处理按钮的动作事件,则该接口名为何? 接口中的方法头声明如何? 答: 实现的接口是ActionListener,该接口的方法声明是public void actionPerformed(ActionEvent e) 2、编写一个简单的计算器,要求图形用户界面如下图所示。 代码 importjava.awt.BorderLayout; importjava.awt.GridLayout; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.util.HashSet; importjavax.swing.JButton; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.JTextField; publicclassjisuanqi{ publicstaticvoidmain(String[]args){ newMyCalculator(); } } classMyCalculator{ privatedoubleresult=0.0; privateStringstring=""; privateJTextFieldjtext=newJTextField("",15); String[]str=newString[]{"Clear","+","0","1","2","3","-","*",".","4","5","6","/","%","=","7","8","9"}; publicMyCalculator(){ JFrameframe=newJFrame("calculator"); frame.setBounds(400,200,450,250); JPaneljp=newJPanel(newGridLayout(3,6,10,10)); frame.setLayout(newBorderLayout()); frame.add(jtext,BorderLayout.NORTH); frame.add(jp,BorderLayout.CENTER); finalHashSethashSet=newHashSet(); classMyEventimplementsActionListener { publicvoidactionPerformed(ActionEvente){ for(Objectk: hashSet){ if(e.getSource()==k) { JButtonjb=(JButton)k; if(jb.getText()=="Clear") jtext.setText(""); else jtext.setText(jtext.getText()+jb.getText()); if(jb.getText()=="="){ char[]c=jtext.getText().toCharArray(); inti; for(i=0;i if(c[i]=='+'||c[i]=='-'||c[i]=='*'||c[i]=='/'||c[i]=='%') break; } Stringastr=String.copyValueOf(c,0,i); Stringbstr=String.copyValueOf(c,i+1,c.length-i-2); MyComputemycompute=newMyCompute(); result=pute(Double.parseDouble(astr),Double.parseDouble(bstr),c[i]); jtext.setText(""+result); } } } } } for(inti=0;i<18;i++){ JButtonb=newJButton(str[i]); jp.add(b); b.addActionListener(newMyEvent()); hashSet.add(b); } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } classMyCompute{ privatedoubleresult=0.0; publicMyCompute(){ } publicdoublecompute(doublea,doubleb,charc){ if(c=='+') result=a+b; if(c=='-') result=a-b; if(c=='*') result=a*b; if(c=='/') result=a/b; if(c=='%') result=a%b; returnresult; } } 3.编程题: 请编写一个简单的用户登录程序。 要求使用图形用户界面, *用户名和密码假定均为java,且密码输入时全部显示为星号(*)。 */ 代码 publicclassTheExam7_3{ publicstaticvoidmain(String[]args){ MyLandmy=newMyLand(); } } classMyLand{ inta=0; publicMyLand(){ JFrameframe=newJFrame(); frame.setBounds(450,300,370,220); Fontfont=newFont("宋体",Font.PLAIN,30); frame.setFont(font); frame.setLayout(newBorderLayout()); JPanelpaneltop=newJPanel(); paneltop.add(newJLabel("用户登陆",JLabel.CENTER)); frame.add(paneltop,BorderLayout.NORTH); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanelpanel_1=newJPanel(newGridLayout(3,1)); frame.add(panel_1,BorderLayout.CENTER); JPanelpanel_11=newJPanel(newFlowLayout()); JPanelpanel_12=newJPanel(newFlowLayout()); JPanelpanel_13=newJPanel(newGridLayout(1,5)); panel_1.add(panel_11); panel_1.add(panel_12); panel_1.add(panel_13); panel_11.add(newJLabel("用户名: ")); finalJTextFieldtext1=newJTextField("",10); panel_11.add(text1); panel_12.add(newJLabel("用户密码: ")); finalJPasswordFieldtext2=newJPasswordField("",10); text2.setEchoChar('*'); panel_12.add(text2); JButtonb=newJButton("确定"); classMyExam7_3implementsActionListener{ publicvoidactionPerformed(ActionEvente){ JDialogdialog=newJDialog(); dialog.setBounds(450,200,560,400); dialog.setVisible(true); Fontfont1=newFont("宋体",Font.BOLD,70); dialog.setFont(font1); if((text1.getText()).equalsIgnoreCase("java")&&String.valueOf(text2.getPassword()).equals("java")) { dialog.add(newJLabel("登陆成功! ",JLabel.CENTER)); //newMyCalculator(); } else dialog.add(newJLabel("密码或用户名错误! ",JLabel.CENTER)); } } b.addActionListener(newMyExam7_3()); panel_13.add(newLabel("")); panel_13.add(newLabel("")); panel_13.add(b); panel_13.add(newLabel("")); panel_13.add(newLabel("")); } } 结果截图 第八章Java多线程技术 1、程序如下: publicclassBorleyextendsThread { publicstaticvoidmain(String[]argv) { Borleyb=newBorley(); b.start(); } publicvoidrun() { System.out.println("Running"); } } 下面描述正确的是: (B)单选 A)通过编译和运行但是没有任何输出。 B)通过编译,运行后输出"Running" C)编译出错,没有线程可供运行 D)编译出错,没有权限使用Thread 2、编写程序,启动1000个线程,每个线程给初值为0的变量sum加1。 (提示,需要通过引用传递,将sum传递给每个线程,为了能够进行引用传递,需要定义一个Integer包装对象来保存sum)。 代码 publicclassBorleyextendsThread{ publicstaticvoidmain(String[]argv){ //通过Integer包装对象sum Integersum=newInteger(0); //循环1000次,开启1000个线程 for(inti=0;i<1000;i++){ Borleyb=newBorley(sum); b.start(); } } privateIntegersum; publicBorley(Integersum){ this.sum=sum; } publicvoidrun(){ sum++; System.out.println(sum); } } 截图 3、利用多线程技术模拟龟兔赛跑的场面。 提示: 先设计一个线程类模拟两个参与赛跑的选手的行为;然后创建该类的两个对象分别代表乌龟和兔子;让兔子跑快些,但在路上睡眠休息时间长些,而乌龟跑慢些却不休息;当某个选手到达终点时其线程运行结束;二个选手均到达终点时,显示并祝贺获胜选手,然后主线程结束。 代码 Importjava.util.Date; publicclassxianchengextendsThread{privateinttortoise_walk=0;//乌龟已跑长度存放变量 privateintrabbit_walk=0;//兔子已跑长度存放变量 privateintfinish=1000;//终点 privatevolatilebooleanhasWinner=false;//胜利者诞生/** classTortoise_RunimplementsRunnable{ publicvoidrun(){ try{ while(! hasWinner){ if(tortoise_walk%100==0&&(tortoise_walk! =0||tortoise_walk>=finish)){//乌龟每100米休息500毫秒 Thread.sleep(500); } tortoise_walk++; System.o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南大学 JAV 第三次 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)