我的目的是计算一个文本文件file.txt里A-Z字母的个数。
file.txt文件里随便输入的字母。
Sp.java文件如下:
import java.io.*;
public class Sp
{
public static void main(String arg[])
{
int count[] = new int[26];
char ch;
int sum = 0;
double per[] = new double[26];
float bar = 0;
try
{
DataInputStream in = new DataInputStream(new BufferedInputStream(
new FileInputStream("file.txt")));
while (in.available() != 0)
{
char word = ((char) in.readByte());
word = Character.toUpperCase(word);
if (word - 'A' >= 0 && word - 'A' < 26)
{
count[word - 'A']++;
}
}
}
catch (IOException e)
{
System.out.println(e.toString());
}
for (int i = 0; i < 26; i++)
{
sum = sum + count[i];
}
System.out.println("Total: " + sum);
for (int i = 0; i < 26; i++)
{
per[i] = count[i] / sum * 100;
bar = Math.round(per[i]);
ch = (char) (i + 65);
System.out.print(ch + ": " + count[i] + '\t' + per[i] + "%" + '\t');
for (int j = 0; j < (bar / 2); j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
百分比计算错误,也就是per[i]值为0,事实上不是如此。