自考JAVA语言程序设计一课后习题答案和源代码第九章.docx
《自考JAVA语言程序设计一课后习题答案和源代码第九章.docx》由会员分享,可在线阅读,更多相关《自考JAVA语言程序设计一课后习题答案和源代码第九章.docx(24页珍藏版)》请在冰豆网上搜索。
![自考JAVA语言程序设计一课后习题答案和源代码第九章.docx](https://file1.bdocx.com/fileroot1/2023-1/24/d5889cdf-21ac-4ec7-a522-b14d6e1e90ac/d5889cdf-21ac-4ec7-a522-b14d6e1e90ac1.gif)
自考JAVA语言程序设计一课后习题答案和源代码第九章
第九章
2.一个文本,一个按钮。
在文本区中输入数据,点击按钮,将文本内容输出到文件。
文件通过文件保存对话框制定。
程序运行结果:
保存文件的源文件:
SaveFile.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
/**
*9.2一个文本,一个按钮。
*在文本区中输入数据,点击按钮,将文本内容输出到文件。
*文件通过文件保存对话框制定。
*@author黎明你好
*/
publicclassSaveFileextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;//序列化时为了保持版本的兼容性
privateJFileChooserfileChooser;//文件选择对话框
privateJPanelnorthPanel;//布局用的
privateJButtonsaveFileButton;//保存按钮
privateJLabellabel;//用来显示文件的绝对路径
privateJTextAreatextArea;//文本框
publicSaveFile()
{
super("第九章,第二题-保存文件");
label=newJLabel("");
fileChooser=newJFileChooser();
northPanel=newJPanel();
saveFileButton=newJButton("保存到文件");
textArea=newJTextArea();
textArea.setLineWrap(true);
saveFileButton.addActionListener(this);
northPanel.add(saveFileButton);
this.add(northPanel,BorderLayout.NORTH);
this.add(newJScrollPane(textArea),BorderLayout.CENTER);
this.add(label,BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(50,50,500,500);
this.setVisible(true);
this.validate();
}
publicvoidactionPerformed(ActionEvente)//监听器方法
{
if(e.getSource()==saveFileButton)
{
intmessage=fileChooser.showSaveDialog(this);
if(message==JFileChooser.APPROVE_OPTION)
{
Filefile=fileChooser.getSelectedFile();
label.setText("保存到:
"+file.getAbsolutePath());//在label上显示这个文件的绝对路径
this.setTitle(file.getName());//设置JFrame的title为文件的名字
saveFile(file);
}
else
{
label.setText("没有文件被选中");
}
}
}
/**
*把文本区上的内容保存到指定文件上
*@paramf-保存到的文件对象
*/
publicvoidsaveFile(Filef)
{
try
{
FileWriterfile=newFileWriter(f);
BufferedWriterout=newBufferedWriter(file);
out.write(textArea.getText(),0,textArea.getText().length());
out.close();
}
catch(Exceptione)
{
label.setText("写文件发生错误");
}
}
publicstaticvoidmain(String[]args)
{
newSaveFile();
}
}
3.在一个文件中,每行存的是整数,各行整数个数不等,要求读这个文件,然后计算每行整数的和,并存到另一个文件中。
程序运行结果:
计算文件中的整数和源文件:
FileIntegerSum.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
/**
*9.3在一个文件中,每行存的是整数,各行整数个数不等,
*要求读如这个文件,然后计算每行整数的和,并存到另一个文件中。
*@author黎明你好
*
*/
publicclassFileIntegerSumextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;
privateJButtonbuttonSave,buttonCount,buttonOpen;//按钮:
保存,计算,保存
privateJTextAreatextArea;//文本区
privateJLabellabel;//显示当前文件的绝对路径的label
privateJFileChooserfiledialog;//文件选择对话框
privateJPanelpanel;//布局用的panel
privateFilefile=null;//文件对象
publicFileIntegerSum()
{
super("第九章,第三题-整数求和");
buttonOpen=newJButton("打开文件");
buttonSave=newJButton("保存到...");
buttonCount=newJButton("计算结果");
label=newJLabel("");
panel=newJPanel();
textArea=newJTextArea();
filedialog=newJFileChooser();
filedialog.addChoosableFileFilter(newMyFileFilter("txt"));
buttonOpen.addActionListener(this);
buttonSave.addActionListener(this);
buttonCount.addActionListener(this);//给按钮加监控
panel.add(buttonOpen);
panel.add(buttonCount);
panel.add(buttonSave);//把按钮添加到panel面板上
this.add(panel,BorderLayout.NORTH);
this.add(newJScrollPane(textArea),BorderLayout.CENTER);
this.add(label,BorderLayout.SOUTH);
this.setBounds(50,50,500,300);
this.validate();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==buttonOpen)
{
filedialog.setDialogTitle("打开");
intresult=filedialog.showOpenDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{
file=filedialog.getSelectedFile();
label.setText(""+file.getAbsolutePath());
readFiletoText(file);
}
elseif(result==JFileChooser.CANCEL_OPTION)
label.setText("你没有选择任何文件\n");
}
if(e.getSource()==buttonSave)
{
filedialog.setDialogTitle("另存为");
intresult=filedialog.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{
file=filedialog.getSelectedFile();
label.setText(""+file.getAbsolutePath());
saveAsText(file);
}
elseif(result==JFileChooser.CANCEL_OPTION)
{
label.setText("你没有选择任何文件\n");
}
}
if(e.getSource()==buttonCount)
{
textArea.setText(null);
if(this.file!
=null)
countResult(file);
}
}
/**
*将指定的文件显示在文本区上
*@paramfile-指定的文件
*/
publicvoidreadFiletoText(Filefile)
{
try
{
FileReaderfile_reader=newFileReader(file);
BufferedReaderin=newBufferedReader(file_reader);
Stringss=newString();
while((ss=in.readLine())!
=null)
{
textArea.append(ss+'\n');
}
in.close();
}
catch(FileNotFoundExceptione2)
{
label.setText("文件没有找到\n");
}
catch(IOExceptione3)
{
e3.printStackTrace();
}
textArea.setCaretPosition(0);
}
/**
*将文本区内容保存到指定文件
*@paramfile-指定的文件
*/
publicvoidsaveAsText(Filefile)
{
try
{
FileWriterfile_writer=newFileWriter(file);
BufferedWriterout=newBufferedWriter(file_writer);
out.write(textArea.getText(),0,(textArea.getText().length()));
out.flush();
out.close();
}
catch(FileNotFoundExceptione2)
{
label.setText("文件没有找到\n");
}
catch(IOExceptione3)
{
}
}
/**
*计算指定文件上,每行整数之和,并显示在文本区上
*@paramfile-指定的文件
*/
publicvoidcountResult(Filefile)
{
try
{
FileReaderfile_reader=newFileReader(file);
BufferedReaderin=newBufferedReader(file_reader);
Stringtemp=newString();
while((temp=in.readLine())!
=null)
{
intnumber=0;
StringTokenizertoken=newStringTokenizer(temp,",.");
while(token.hasMoreTokens())
{
number+=Integer.parseInt(token.nextToken());
}
textArea.append(temp+"---------相加结果是:
"+number+'\n');
}
in.close();
}
catch(Exceptione2)
{
label.setText("error"+e2+'\n');
}
}
publicstaticvoidmain(Stringargs[])
{
newFileIntegerSum();
}
}
4.在一个文本区中输入数据,把输入的数据分析成各个单词,然后排序显示到第二个文本区中,并通过文件保存对话框保存到文件中。
程序运行结果:
源文件:
SortString.java
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.io.*;
/**
*9.4在一个文本区中输入数据,把输入的数据分析成各个单词,
*然后排序显示到第二个文本区中,并通过文件保存对话框保存到文件中.
*@author黎明你好
*/
publicclassSortStringextendsJFrameimplementsCaretListener,ActionListener
{
privatestaticfinallongserialVersionUID=1L;
privateJTextAreainput_text;//用于输入的文本区
privateJTextAreashowResult_text2;//显示排序后的文本区
privateJButtonclear_button,save_button;//按钮:
清空,保存
privateJFileChooserfiledialog;//文件选择对话框
privateJLabellabel;
privateJPanelpanel1,panel2;
publicSortString()
{
super("第九章,第四题-排序");
filedialog=newJFileChooser();
input_text=newJTextArea("",15,30);
showResult_text2=newJTextArea("",15,30);
clear_button=newJButton("清空");
save_button=newJButton("保存到...");
panel1=newJPanel();
panel2=newJPanel();
label=newJLabel("");
input_text.setLineWrap(true);
showResult_text2.setEditable(false);
input_text.addCaretListener(this);
clear_button.addActionListener(this);
save_button.addActionListener(this);
panel1.add(clear_button);
panel1.add(save_button);
panel2.add(newJScrollPane(input_text));
panel2.add(newJScrollPane(showResult_text2));
this.add(panel1,BorderLayout.NORTH);
this.add(panel2,BorderLayout.CENTER);
this.add(label,BorderLayout.SOUTH);
this.setBounds(20,20,700,400);
this.validate();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidcaretUpdate(CaretEvente)
{
Stringstring=input_text.getText();
StringTokenizerfenxi=newStringTokenizer(string,"();:
.,.,'\n''\t'");
intn=fenxi.countTokens();
StringarrayStr[]=newString[n];
for(inti=0;i{
Stringtemp=fenxi.nextToken();
arrayStr[i]=temp;
}
Arrays.sort(arrayStr);//排序
showResult_text2.setText(null);
for(inti=0;i{
showResult_text2.append(arrayStr[i]+"\n");
}
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==clear_button)
{
input_text.setText(null);
}
if(e.getSource()==save_button)
{
filedialog.setDialogTitle("另存为");
intresult=filedialog.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{
Filefile=filedialog.getSelectedFile();
label.setText(""+file.getAbsolutePath());
saveAsText(file);
}
}
}
/**
*把文本区上的内容保存到指定文件上
*@paramf-保存到的文件对象
*/
publicvoidsaveAsText(Filefile)
{
try
{
FileWriterfile_writer=newFileWriter(file);
BufferedWriterout=newBufferedWriter(file_writer);
out.write(showResult_text2.getText(),0,(showResult_text2.getText().length()));
out.flush();
out.close();
}
catch(FileNotFoundExceptione2)
{
label.setText("文件没有找到");
}
catch(IOExceptione3)
{
e3.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[])
{
newSortString();
}
}
5.在一个文本区中输入数据,将文本区中的数据存入文件中,在又用户指定的序号,程序从文件中读取对应序号数据,输出到文本框中。
程序运行结果:
源文件:
Work9_5.java
importjava.awt.BorderLayout;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
/**
*9.5在一个文本区中输入数据,将文本区中的数据存入文件中
*在又用户指定的序号,程序从文件中读取对应序号数据,输出到文本框中。
*@author黎明你好
*/
publicclassWork9_5extendsJFrame