关于统计字符数组中同一字符出现的次数
下面是我写出来的代码,字符集合中,“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+"次");