java小项目代码少的_个人小项目——Java实现WC功能

这个小项目用了两种方法解决了该功能的实现。

1.两种方法的功能和具体实现

代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文本实现一次重写,用String类的replace方法将空格用其他字符替换,然后可以实现字母数,单词数和行数的统计。另一种方法没有重新写文本,直接在缓冲区中处理文本,除上面三个之外还统计了空格数,字符总数和标点符号数。

2.优缺点比较

方法一可以统计出空行,而方法二由于是使用bufferedReader,每一行统计一次,所以无法读出没有内容的空行;但是方法二没有用到写入文本的FileOutputStream流,相对来说不容易出错。两种方法都有些小缺点,但能实现一般的统计功能。

3.项目源码

1 packagepro2;2

3 importjava.io.BufferedReader;4 importjava.io.File;5 importjava.io.FileInputStream;6 importjava.io.FileOutputStream;7 importjava.io.IOException;8 importjava.io.InputStreamReader;9

10 /**

11 * 实现能计算一个文本的字符数,单词数和行数的功能12 *@authorPC13 *14 */

15

16 public classwcProject {17

18 private static int charcalculate=0;19 private static int wordcalculate=0;20 private static int linecalculate=0;21

22 //解析字符数,单词数,行数,空格数

23 public static voidcalculate2() {24 String str="";25 int words = 0;//单词数

26 int chars = 0;//字母数

27 int lines = 0;//行数

28 int spaces=0;//空格数

29 int marks=0;//标点数

30 int c=0;//字符数

31 int t=0;//\t

32 int count=0;33

34 FileInputStream fis=null;35 BufferedReader br=null;36 try{37 File file = new File("aaa.txt");38 if (file.exists()){//判断文件是否存在39 //打开文件输入流

40 fis=newFileInputStream(file);41 //字符流写入了缓冲区

42 br=new BufferedReader(newInputStreamReader(fis));43 while((str=br.readLine())!=null){//readLine()每次读取一行,转化为字符串,br.readLine()为null时,不执行

44 char[] b=str.toCharArray();//将字符串对象中的字符转换为一个字符数组

45 for (int i = 0; i < str.length(); i++) {46 //System.out.println("b[i]--"+b[i]);

47 if(b[i]!=' '&&b[i]!='\n'&&b[i]!='\t'&&b[i]!=','&&b[i]!='.'&&b[i]!='!'&&b[i]!=';'&&b[i]!='='){48 chars++;49 if(count>=1){50 count=0;51 }52 }53 if(b[i]==' '||b[i]=='\n'||b[i]=='\t'||b[i]==','||b[i]=='.'||b[i]=='!'||b[i]=='='||b[i]==';'){54 if(b[i]==' '){55 spaces++;56 }57 if(b[i]=='\t'){58 t++;59 }60 if (b[i]==','||b[i]=='.'||b[i]=='?'||b[i]=='!'||b[i]==';'){61 marks++;62 }63

64 words++;System.out.println("b[i]--"+b[i]+"--words--"+words);65 count++;66 if(count>1){67 words--;68 }69 }70 }71 lines++;//行数(由于每次读取一行,行数自加即可)

72 c=chars+spaces+marks+t;73 }74 //关闭文件

75 br.close();76 System.out.println("字符数:"+c+"单词数:"+(words+lines)+",字母数:"+chars+",行数:"+lines+",标点数:"+marks+",空格数:"+spaces);77 }78 } catch(Exception e) {79 e.printStackTrace();80 }81 }82 public static void calculate1() throwsIOException83 {84 FileInputStream fis=new FileInputStream("aaa.txt");85 FileOutputStream fos=new FileOutputStream("bbb.txt");86

87 byte[] b=new byte[1024];88 int len=0;89 while((len=fis.read(b))!=-1){90 String str=new String(b,0,len);91 //System.out.println(str);

92 String a=str.replace(" ",",");93 fos.write(a.getBytes());94 }95

96 FileInputStream fis1=new FileInputStream("bbb.txt");97 inta;98 int count=0;99 while((a=fis1.read())!=-1){100 if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.'&&a!='!'&&a!=';'&&a!='='){101 //System.out.println("c--"+(char)a);

102 charcalculate++;103 if(count>=1){104 //System.out.println("count--");

105 count=0;106 }107 }108 if(a==' '||a=='\n'||a=='\t'||a==','||a=='.'||a=='!'||a=='='||a==';'){109 //System.out.println("w--"+(char)a);

110 wordcalculate++;111 count++;112 if(count>1){113 //System.out.println("wordcalculate--");

114 wordcalculate--;115 }116 }117 if(a=='\n'){118 //System.out.println("l--"+(char)a);

119 linecalculate++;120 //count--;

121 }122 }123 charcalculate=charcalculate-linecalculate;124 linecalculate++;125

126 fis.close();127 fos.close();128

129 }130 public static void main(String[] args) throwsIOException{131 //calculate2();132

133 //calculate1();134 //System.out.println("CharNum:"+charcalculate);135 //System.out.println("WordNum:"+wordcalculate);136 //System.out.println("LineNum:"+linecalculate);

137 }138

139

140 }

本项目源码上传至个人GitHub:https://github.com/JingJiang0628/JavaLesson/blob/master/20170907-SoftwareEngineering/src/pro2/wcProject.java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值