1、java 实验报告实验1 分析成绩单一、实验目的:掌握字符输入、输出流用法。二、实验代码:Fenxi:import java.util.*;public class Fenxi public static double getTotalScore(String s) Scanner scanner=new Scanner(s); scanner.useDelimiter(0123456789.+); double totalScore=0; while(scanner.hasNext() try double score=scanner.nextDouble(); totalScore=tot
2、alScore+score; catch(InputMismatchException exp) String t=scanner.next(); return totalScore; AnalysisResult:import java.io.*;import java.util.*;public class AnalysisResult public static void main(String args) File fRead=new File(score.txt); File fWrite=new File(scoreAnalysis.txt); try Writer out= ne
3、w FileWriter(fWrite,true);/以尾加方式创建指向文件fWrite的out流 BufferedWriter bufferWrite=new BufferedWriter(out); /创建指向out的bufferWrite流 Reader in=new FileReader(fRead); /创建指向文件fRead的in流 BufferedReader bufferRead=new BufferedReader(in); /创建指向in的bufferRead流 String str=null; while (str=bufferRead.readLine()!=null)
4、 double totalScore =Fenxi.getTotalScore(str); str=str+总分:+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); bufferRead.close(); bufferWrite.close(); catch(IOException e) System.out.println(e.toString(); 三、结果截图:四、实验分析:(1)改进程序,使得能统计出每个学生的平均成绩。答:(2)现在有如下格式的货物明细(文本格式)go
5、ods.txt品名:电视,length:102 cm,width:89 cm,height:56 cm.品名:轿车,length:4502 cm,width:178 cm,height:156 cm.品名:桌子,length:125 cm,width:78 cm,height:68 cm.答:CalculateVolume.javaimport java.io.*;import java.util.*;public class CalculateVolume public static void main(String args) File fRead=new File(goods.txt);
6、 File fWrite=new File(goodsVolume.txt); tryWriter out=new FileWriter(fWrite,true); BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new FileReader(fRead); BufferedReader bufferRead=new BufferedReader(in); String str=null; while(str=bufferRead.readLine()!=null) double s=Jisuan.getVolume(
7、str); str=str+体积:+s+cm3; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); bufferRead.close(); bufferWrite.close(); catch(IOException e) System.out.println(e.toString(); Jisuan.javaimport java.util.*;public class Jisuan public static double getVolume(String s) Scanner scanner=n
8、ew Scanner(s); scanner.useDelimiter(0123456789.+); double volume=1; while(scanner.hasNext() try double distance=scanner.nextDouble(); volume=volume*distance; catch(InputMismatchException exp) String t=scanner.next(); return volume; 实验2 统计英文单词一、实验目的:掌握使用Scanner类解析文件。二、实验代码:Dictionary.java:import java
9、.util.*;public class Dictionary public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic(); statistic.setFileName(hello.txt); statistic.wordStatistic();/statistic调用WordStatistic()方法 allWord=statistic.getAllWord(); noSameWord=statistic.getNoSameWord();
10、 System.out.println(共有+allWord.size()+个英文单词); System.out.println(有+noSameWord.size()+个互不相同英文单词); System.out.println(按字典顺序排列:); String s=new String noSameWord.size(); for(int i=0;inoSameWord.size();i+) si=noSameWord.elementAt(i); Arrays.sort(s); for(int i=0;inoSameWord.size();i+) System.out.println(s
11、i+ ); OutputWordMess.java:import java.util.*;public class OutputWordMess public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic(); statistic.setFileName(hello.txt); statistic.wordStatistic();/statistic调用WordStatistic()方法 allWord=statistic.getAllWord
12、(); noSameWord=statistic.getNoSameWord(); System.out.println(共有+allWord.size()+个英文单词); System.out.println(有+noSameWord.size()+个互不相同英文单词); System.out.println(按出现频率排列:); int count=new intnoSameWord.size(); for(int i=0;inoSameWord.size();i+) String s1=noSameWord.elementAt(i); for(int j=0;jallWord.size(
13、);j+) String s2=allWord.elementAt(j); if(s1.equals(s2) counti+; for(int m=0;mnoSameWord.size();m+) for(int n=m+1;ncountm) String temp=noSameWord.elementAt(m); noSameWord.setElementAt(noSameWord.elementAt(n),m); noSameWord.setElementAt(temp,n); int t=countm; countm=countn; countn=t; for(int m=0;mnoSa
14、meWord.size();m+) double frequency=(1.0*countm)/allWord.size(); System.out.printf(%s:%-7.3f,noSameWord.elementAt(m),frequency); WordStatistic.java:import java.io.*;import java.util.*;public class WordStatistic Vector allWord,noSameWord; File file=new File(english.txt); Scanner sc=null; String regex;
15、 WordStatistic() allWord=new Vector(); noSameWord=new Vector();/regex是由空格数字和符号(!#$&()*+,-./:;?_|)组成的正则表达式 regex=sdpPunct+; try sc=new Scanner(file);/创建指向file的sc sc.useDelimiter(regex); /sc调用useDelimiter(String regex)方法,向参数传递regex catch(IOException exp) System.out.println(exp.toString(); void setFile
16、Name(String name) file=new File(name); try sc=new Scanner(file); sc.useDelimiter(regex); catch(IOException exp) System.out.println(exp.toString(); public void wordStatistic() try while(sc.hasNext() String word=sc.next(); allWord.add(word); if(!noSameWord.contains(word) noSameWord.add(word); catch(Ex
17、ception e) public Vector getAllWord() return allWord; public Vector getNoSameWord() return noSameWord; 三、结果截图:四、实验分析:按字典顺序输出全部不相同的单词。答:Dictionary.javaimport java.util.*;public class Dictionary public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic()
18、; statistic.setFileName(hello.txt); statistic.wordStatistic();/statistic调用WordStatistic()方法 allWord=statistic.getAllWord(); noSameWord=statistic.getNoSameWord(); System.out.println(共有+allWord.size()+个英文单词); System.out.println(有+noSameWord.size()+个互不相同英文单词); System.out.println(按字典顺序排列:); String s=new
19、 String noSameWord.size(); for(int i=0;inoSameWord.size();i+) si=noSameWord.elementAt(i); Arrays.sort(s); for(int i=0;inoSameWord.size();i+) System.out.println(si+ ); 实验3 读取压缩文件一、实验目的:掌握ZipInputStream流的使用。 二、实验代码:import java.io.*;import java.util.zip.*;public class ReadZipFile public static void mai
20、n(String args) File f=new File(book.zip); File dir=new File(mybook); byte b=new byte100; dir.mkdir(); try ZipInputStream in=new ZipInputStream(new FileInputStream(f); ZipEntry zipEntry=null; while(zipEntry=in.getNextEntry()!=null) File file=new File(dir,zipEntry.getName(); FileOutputStream out=new F
21、ileOutputStream(file); int n=-1; System.out.println(file.getAbsolutePath()+的内容:); while(n=in.read(b,0,100)!=-1) String str=new String(b,0,n); System.out.println(str); out.write(b,0,n); out.close(); in.close(); catch(IOException ee) System.out.println(ee); 三、结果截图:四、实验分析:编写一个GUI程序,提供一个对话框,用户可以使用这个对话框选
22、择要解压缩的Zip文件,设置解压后所得到的文件的存放目录。答:import java.io.*;import java.util.zip.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame extends JFrame implements ActionListener private static final long serialVersionUID = 1L; private JFileChooser fileChooser = new JFileChooser(.);
23、 private JButton button = new JButton(打开想要解压文件); public MyFrame() this.setTitle(解压); this.setPreferredSize(new Dimension(500, 400); this.getContentPane().add(button, BorderLayout.CENTER); button.addActionListener(this); this.pack(); this.setLocationRelativeTo(null); this.setIgnoreRepaint(true); publ
24、ic void actionPerformed(ActionEvent e) Object source = e.getSource(); if (source instanceof JButton) openFile(); public void openFile() fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setDialogTitle(打开Zip文件夹); int ret = fileChooser.showOpenDialog(null); if (ret = JFileCh
25、ooser.APPROVE_OPTION) System.out.println(fileChooser.getSelectedFile().getAbsolutePath(); File f=new File(book.zip); File dir=new File(mybook); byte b=new byte100; dir.mkdir(); tryZipInputStream in=new ZipInputStream(new FileInputStream(f); ZipEntry zipEntry=null; while(zipEntry=in.getNextEntry()!=n
26、ull) File file=new File(dir,zipEntry.getName(); FileOutputStream out=new FileOutputStream(file); int n=-1; System.out.println(file.getAbsolutePath()+的内容:); while(n=in.read(b,0,100)!=-1) String str=new String(b,0,n); System.out.println(str); out.write(b,0,n); out.close(); in.close(); catch(IOExceptio
27、n ee) System.out.println(ee); public static void main(String args) Frame frame = new MyFrame(); frame.setVisible(true); 补充1、用命令行带参的方式实现dir命令的功能,不带参数表示查询当前目录,带参数表示查询指定的目录,如dir c: ,并支持dir *.java的文件后缀过滤功能。答:Dir.javaimport java.io.*;import java.util.*;import java.text.*;public class Dir public void GoBack() this.dir(System.getProperty(user.dir),1); public void GoBack(String userdir) if(userdir.equals(*.java) this.dir(System.getProperty(user.dir),0); else this.dir(userdir,1); public void dir(String str,int m) String di