Topic: 请问在下面这段代码中是怎样实现”计数“的

  Print this page

1.请问在下面这段代码中是怎样实现”计数“的 Copy to clipboard
Posted by: zxhhero
Posted on: 2004-11-10 21:41

// A word counting utility.
import java.io.*;

class WordCount {
public static int words = 0;
public static int lines = 0;
public static int chars = 0;

public static void wc(InputStreamReader isr)
throws IOException {
int c = 0;
boolean lastWhite = true;
String whiteSpace = " \t\n\r";

while ((c = isr.read()) != -1) {
// Count characters
chars++;
// Count lines
if (c == '\n') {
lines++;
}
// Count words by detecting the start of a word
int index = whiteSpace.indexOf(c);
if(index == -1) {
if(lastWhite == true) {
++words;
}
lastWhite = false;
}
else {
lastWhite = true;
}
}
if(chars != 0) {
++lines;
}
}

public static void main(String args[]) {
FileReader fr;
try {
if (args.length == 0) { // We're working with stdin
wc(new InputStreamReader(System.in));
}
else { // We're working with a list of files
for (int i = 0; i < args.length; i++) {
fr = new FileReader(args[i]);
wc(fr);
}
}
}
catch (IOException e) {
return;
}
System.out.println(lines + " " + words + " " + chars);
}
}

请问红色部分代码是怎样实现words计数的,麻烦请各位dgdj说明一下!

2.Re:请问在下面这段代码中是怎样实现”计数“的 [Re: zxhhero] Copy to clipboard
Posted by: zcjl
Posted on: 2004-11-20 15:16


//说明:
//lastWhite == true 计数开始或者前一个字符是“空白”
//lastWhite == false 前一个字符不是空白

int index = whiteSpace.indexOf(c); //判断当前字符是否是“空白”(不是则index == -1)
if(index == -1) { // 不是“空白”,说明当前字符处于word中(这里假定以“空白”字符来断词)
if(lastWhite == true) { // 前一个字符是“空白”,所以当前字符是word的第一个字符,word数量+1
++words;
}
lastWhite = false; // 对于下一个字符来说,“前一个”字符就不是空白了
} else {
lastWhite = true;
}


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923