湖南大学JAV第三次作业.docx

上传人:b****4 文档编号:11700105 上传时间:2023-03-30 格式:DOCX 页数:20 大小:243.68KB
下载 相关 举报
湖南大学JAV第三次作业.docx_第1页
第1页 / 共20页
湖南大学JAV第三次作业.docx_第2页
第2页 / 共20页
湖南大学JAV第三次作业.docx_第3页
第3页 / 共20页
湖南大学JAV第三次作业.docx_第4页
第4页 / 共20页
湖南大学JAV第三次作业.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

湖南大学JAV第三次作业.docx

《湖南大学JAV第三次作业.docx》由会员分享,可在线阅读,更多相关《湖南大学JAV第三次作业.docx(20页珍藏版)》请在冰豆网上搜索。

湖南大学JAV第三次作业.docx

湖南大学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

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

当前位置:首页 > 医药卫生 > 临床医学

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

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