日期:2014-05-20  浏览次数:20697 次

关于统计字符数组中同一字符出现的次数
下面是我写出来的代码,字符集合中,“1”和“2”都出现了3次,均为最大出现次数,因为“1”先出现,则输出字符“1”和它出现的次数3次。但是我只能做到把1和2同时输出,怎样修改,还有没有更简单,高效的方法
import java.util.*;
public class Test19
{
public static void main(String[] args)
{
int max=1;
String[] strs={"3","1","4","7","2","1","1","2","2"};
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))  
count++;
}
if(max<count)
max=count;
}
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))  
count++;
}
if(count==max)
System.out.println(strs[i]+"出现了"+max+"次");
}


}

}

运行结果:
1出现了3次
2出现了3次


------解决方案--------------------
试试用这个代码,用数组来计算次数。
[code=Java][/code]
public class Test1
{
public static void main(String[] args)
{

int[] count = new int[9];
String[] strs={"3","1","4","7","2","1","1","2","2"};
for(int i=0;i<strs.length;i++)
{

for(int j=0;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))
count[i]++;
}

}
int max = count[strs.length-1];
int maxIndex =0;
for(int i=strs.length-1;i>=0;i--){
if(max <= count[i]){
max = count[i];
maxIndex = i;
}
}
System.out.println(strs[maxIndex]+"出现了"+max+"次");

}

}
------解决方案--------------------
加了点语句供参考:
Java code
        String minString=null;            //保存那个最小的字符串.
        for(int i=0;i<strs.length-1;i++)
        {
            int count=1;

            for(int j=i+1;j<strs.length;j++)
            {
                if(strs[i].equals(strs[j]))   
                count++;    
            }
            if(count==max)
            {
                if(minString==null)    //第一次找到一个出现最多的字符串
                {                //把这个值放在minString里。
                    minString=strs[i];
                    }
                    else            //再次出现,进行比较,新出现的字符串
                {            //“小于”上次出现的,更新。三目运算。
                    minString=Integer.parseInt(minString)>
                        Integer.parseInt(strs[i])?strs[i]:minString;
                }
            }
        }            
        System.out.println(minString+"出现了"+max+"次");