/*************************************************************
*编写一个程序,用一个数组来记录一个字符串中每个字母出现 *
*的次数(忽略大小写),并输出结果,该字符串为运行时由命 *
*令行参数给出! *
*************************************************************/
class StatCharInStr
{
public String str;
public StatCharInStr(String s)
{
str=s;
}
public void stat()
{
str=str.trim().toLowerCase();
//统计时,不区分大小写,去掉空格后,统一转化成小写的
char eachChar[]=new char[str.length()];
//keep each unique char in command line
int eachCharTimes[]=new int[str.length()];
//keep times of each unique char in command line
eachChar=str.toCharArray();
int index=0;
for(int i=0;i<str.length();i++)
{
char ch=str.charAt(i);
if(isExist(eachChar,ch)>=0) //重复出现的字符
eachCharTimes[isExist(eachChar,ch)]++;
else
{ //首次出现的字符
eachChar[index]=ch;
eachCharTimes[index]++;
index++;
}
}
System.out.println("String "+str+" statistic as follow:");
for(int i=0;i<eachChar.length;i++)
{
if(eachCharTimes[i]!=0)
System.out.println(eachChar[i]+" "+eachCharTimes[i]);
}
}
public int isExist(char charArray[],char ch)
{
for(int i=0;i<charArray.length;i++)
{
if(charArray[i]==ch)
return i;
}
return (-1);
}
/*public int numOfNotZoneElem(int charArr[])
{
int count=0;
for(int i=0;i<charArr.length;i++)
if(charArr[i]!=0)
count++;
return count;
}*/
}
class ex_5_6_2
{
public static void main(String args[])
{
StatCharInStr statChar=new StatCharInStr(args[0]);
statChar.stat();
}
}