读书人

java中输入10个数要求出每个数出

发布时间: 2012-09-03 09:48:39 作者: rapoo

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 


[解决办法]
楼上的方法很有意思,先对内容进行排序,然后再通过最前一个和最后一个的索引来计算,不错
[解决办法]
忘了说了,这个只是对于单字符的数字有作用,如果数字是两位的可能就要有些麻烦了
[解决办法]

探讨

可以用hashmap。。。key用来计数值,value用来记次数。。

[解决办法]
探讨

引用:

可以用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 <= ……

[解决办法]
回复11楼,当你发代码的时候点下上面一排的第7个
A B I U S A #
第七个是发代码的,点下你就懂了

读书人网 >J2SE开发

热点推荐