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

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出现次数:4
2出现次数:3
3出现次数:2
4出现次数:1
5出现次数:1
6出现次数:1
7出现次数:1
8出现次数:1