forked from apache/groovy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwc.java
47 lines (42 loc) · 1.43 KB
/
wc.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// $Id: wc.java,v 1.2 2004-06-20 08:39:47 bfulgham Exp $
// http://www.bagley.org/~doug/shootout/
// with help from [email protected]
import java.io.*;
import java.util.*;
import java.text.*;
// this program modified from:
// http://cm.bell-labs.com/cm/cs/who/bwk/interps/pap.html
// Timing Trials, or, the Trials of Timing: Experiments with Scripting
// and User-Interface Languages</a> by Brian W. Kernighan and
// Christopher J. Van Wyk.
public class wc {
public static void main(String[] args) {
int nl = 0, nw = 0, nc = 0;
try {
byte[] buff = new byte[4096];
boolean inword = false;
int length;
char c;
while ((length = System.in.read(buff)) != -1) {
nc += length;
for(int i = 0; i < length; i++) {
c = (char)buff[i];
if (c == '\n')
++nl;
if (Character.isWhitespace(c))
inword = false;
else if (inword == false) {
++nw;
inword = true;
}
}
}
} catch (IOException e) {
System.err.println(e);
return;
}
System.out.println(Integer.toString(nl) + " " +
Integer.toString(nw) + " " +
Integer.toString(nc));
}
}