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;iif(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