我想问题应该在这里吧
frequencyTable[inputChar-'a'] = frequencyTable[inputChar-'a'] + 1;
你定义的frequencyTable是一个0到25的数组,如果输入的不是'a'-'z',比如大写'A'或者回车空格之类,inputChar-'a'不就越界了吗?
frequencyTable[inputChar-'a'] = frequencyTable[inputChar-'a'] + 1;
你定义的frequencyTable是一个0到25的数组,如果输入的不是'a'-'z',比如大写'A'或者回车空格之类,inputChar-'a'不就越界了吗?
解决方案 »
- 我在 读取 txt 文件按行 读取 我手动输入一个 回车 这个回车 也被按行读取了 并存入数据库了
- java logger类日志级别设定????
- 我是新手,我已经安装了jdk6,我要用它制作网页,请问还要准备什么?
- 为甚么静态变量没有指针?
- 新手求助!简单问题,一个正则表达式的意思
- 软件设计师是什么哦?
- 这个问题困扰了我两天,哪里出了问题?
- 关于常量(final)的底层实现,我都晕了,我~
- JBUILDER8和JBOSS3.04(与TOMCAT4.1合成)能够实现WEB SERVICE功能的开发吗?
- 各位大侠,帮帮忙,多谢了。
- <-----------我的TextArea怎么不可见?高手帮忙啊----------->
- 关于事务控制的问题!
System.out.println(inputChar);
得到的不是输入的字符,而是一些汉字,当然越界了,是不是不能使用DataInputStream来读字符呢?
the next two bytes of this input stream as a Unicode character
看到readChar(),一次读出了两个字符,所以显示成为了汉字吧!
byte b = in.readByte();
如果b不在 [a-z][A-Z]范围里就continue;
应该用byte
import java.io.*;public class CalculateFrequency
{
public static void main(String[] args) throws Exception
{
int[] frequencyTable = new int[26];
for (int i=0;i<26;i++)
{
frequencyTable[i] = 0;
}
DataInputStream in = new DataInputStream(System.in);
try
{
byte inputChar = in.readByte();
while (inputChar != '.')
{
frequencyTable[inputChar-'a'] = frequencyTable[inputChar-'a'] + 1;
inputChar = in.readByte();
}
in.close();
}
catch (IOException e)
{
System.out.println("输入字符有误");
}
for (int i=0;i<26;i++)
{
if (frequencyTable[i] != 0)
{
char c = (char)(97 + i);
System.out.println("字母"+c+"出现次数: "+frequencyTable[i]);
}
}
}
}