当前位置: 代码迷 >> J2SE >> java中,输入10个数,要求出每个数出现的次数
  详细解决方案

java中,输入10个数,要求出每个数出现的次数

热度:1748   发布时间:2013-02-25 00:00:00.0
java中,输入10个数,要求出每个数出现的次数,在线等
java中,比如一个一个数输入,输入如下的 2 2 3 3 4 5 6 7 8 9 ,那么,应该得出,2出现了2次,3出现了3次,4出现一次等....

这如何实现呢,

------解决方案--------------------------------------------------------
可以用hashmap。。。key用来计数值,value用来记次数。。
------解决方案--------------------------------------------------------
Java code
String str = "1122345678";        HashMap<Character, Integer> strhash = new HashMap<Character, Integer>();        int num = 0;        int count = 0;        for (int i = 0; i <= str.length() - 1; i++) {            char c = str.charAt(i);            int temp = 0;            for (int j = 0; j <= str.length() - 1; j++) {                num = str.indexOf(c, temp);                if (num != -1) {                    count++;                    temp = num + 1;                    continue;                 }                 else {                    strhash.put(c, count);                    count = 0;                    break;                }            }        }         Iterator iter1 = strhash.keySet().iterator();        while (iter1.hasNext()) {            Object key = iter1.next();            Object value = strhash.get(key);            System.err.println(key + "   的出现次数为:" + value+"  次");        }
------解决方案--------------------------------------------------------
Java code
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set;public class ShowNum {    public static void main(String[] args) {        Map<String, Integer> m = new HashMap<String, Integer>();        boolean test = true;        String str = "";        for (int i = 0; i < 10; i++) {            Scanner sc = new Scanner(System.in);            if(sc.hasNext()) {                str = sc.next();                Set<String> set = m.keySet();                Iterator<String> it = set.iterator();                label: while (it.hasNext()) {                    String s = it.next();                    if (s.equals(str)) {                        int n = m.get(s);                        it.remove();                        m.remove(s);                        m.put(str, n + 1);                        test = false;                        break label;                    }                }            }            if (test) {                m.put(str, 1);  //str出现的第一次                test=true;            }        }        System.out.println(m);    }}
------解决方案--------------------------------------------------------
import java.util.*;

public class Statistics {
public static void main(String[] args){
Random rand=new Random(100);
List<Integer> list=new ArrayList<Integer>();
Map<Integer,Integer> hm=new HashMap<Integer,Integer>();
for(int i=0;i<10;i++)
list.add(rand.nextInt(5));
System.out.println(list);
for(Integer it:list){
Integer freq=hm.get(it);
hm.put(it,freq==null?1:freq+1 );
}
System.out.println(hm);
}

}
结果:[0, 0, 4, 3, 1, 1, 1, 3, 3, 3]
{0=2, 1=3, 3=4, 4=1}
------解决方案--------------------------------------------------------
给你个简单的算法,用数组。
如果给的数范围不是超大的话。
int a[SIZE];
将数组a全部初始化0;
for(...)
{
a[i]++; //i就是你出现的数 a[i]就是次数
}
懂没?
------解决方案--------------------------------------------------------
Java code
public class Zygcsmb {        public static void main(String[] args) {        String str = "11223451627138",strsave = "";                char[] xx = str.toCharArray();        Arrays.sort(xx);        StringBuffer sb = new StringBuffer();        sb.append(xx);        str = sb.toString();                for(int i = 0; i<str.length(); i ++){            if(!strsave.equals(""+str.charAt(i))){                strsave = String.valueOf(str.charAt(i));                System.out.print(str.charAt(i)+"出现次数:");                System.out.println(str.lastIndexOf(str.charAt(i))-str.indexOf(str.charAt(i))+1);            }                    }    }}运行结果:1出现次数:42出现次数:33出现次数:24出现次数:15出现次数:16出现次数:17出现次数:18出现次数:1
  相关解决方案