让用户输入数字,输入0程序终止,显示出现频率最大的一个或多个数字,这是我编的程序,数次数那边怎么也写不对~高手帮帮忙啦~
package chapter22;/**
 *
 * @author zzhao
 */
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class ex22_7prac {        public static void main(String[] args) {                HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();                int s = 0;                do{
                        Scanner input = new Scanner(System.in);                        //ask for user's input
                        System.out.print("Enter the numbers: ");                        //obtain user's input
                        s = input.nextInt();                        for(int i = 0; i < map.size(); i++){
                        map.put(s, i);
                         int key = i;
                                if (map.containsKey(key)) {
                                   int occurrence = map.get(key);
                                        occurrence++;
                                   map.put(key, occurrence);
                                } else {
                                        map.put(key, 1);
                                }
                        }                } while (s != 0);           Iterator iterator = map.keySet().iterator();           while (iterator.hasNext()) {
                   int key = (Integer) iterator.next();
                   int occurrence = map.get(key);
                   if(occurrence >= 2)
                        System.out.println(key + " occur " + occurrence + " time(s).");
                }        }} 

解决方案 »

  1.   

    当你第一次输入,准备要将输入的数字加入Map时,此时Map的长度为0,for语句一判断不会执行,也就是连加都没有加入map.你可以在for循环前写一个打印语句看看。我帮你改的程序如下:运行OK!package csdn.kane;import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Scanner;public class kane {
    public static void main(String[] args) {
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    int s = 0;
    do {
    Scanner input = new Scanner(System.in);
    // ask for user's input
    System.out.print("Enter the numbers: ");
    // obtain user's input
    s = input.nextInt();
    System.out.println(map.size());
    if (map.containsKey(s)) {
    int occurrence = map.get(s);
    occurrence++;
    map.put(s, occurrence);
    } else {
    map.put(s, 1);
    } } while (s != 0);
    Iterator iterator = map.keySet().iterator();
    while (iterator.hasNext()) {
    int key = (Integer) iterator.next();
    int occurrence = map.get(key);
    if (occurrence >= 2)
    System.out.println(key + " occur " + occurrence + " time(s).");
    }
    }
    }
      

  2.   

    提供你一个。找出序列中的主要元素
    [code]
    public class MajorityObj { private Object[] array; public MajorityObj(Object[] array) {
    this.array = array;
    } public Object majority() {
    Object c = candidate(0);
    int count = 0;
    for (int i = 0; i < array.length; i++) {
    if (array[i].equals(c))
    count += 1;
    }
    if (count > (array.length / 2))
    return c;
    else
    return null;
    } public Object candidate(int m) {
    int j = m;
    Object c = array[m];
    int count = 1; while (j < array.length - 1 && count > 0) {
    j = j + 1;
    if (c.equals(array[j]))
    count += 1;
    else
    count -= 1;
    } if (j == array.length - 1)
    return c;
    else
    return candidate(j + 1);
    }}[/code]
      

  3.   

    public class MajorityObj { private Object[] array; public MajorityObj(Object[] array) {
    this.array = array;
    } public Object majority() {
    Object c = candidate(0);
    int count = 0;
    for (int i = 0; i < array.length; i++) {
    if (array[i].equals(c))
    count += 1;
    }
    if (count > (array.length / 2))
    return c;
    else
    return null;
    } public Object candidate(int m) {
    int j = m;
    Object c = array[m];
    int count = 1; while (j < array.length - 1 && count > 0) {
    j = j + 1;
    if (c.equals(array[j]))
    count += 1;
    else
    count -= 1;
    } if (j == array.length - 1)
    return c;
    else
    return candidate(j + 1);
    }}
      

  4.   

    import java.util.*;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.Map.Entry;public class Temp { public static void main(String[] args) {
    HashMap hm = new HashMap();
    ArrayList al = new ArrayList();
    al.add("a");
    al.add("a");
    al.add("a");
    al.add("b");
    al.add("c");
    al.add("c");
    al.add("d");
    al.add("d");
    al.add("c");
    for (int i = 0; i < al.size(); i++) {
    if (hm.get(al.get(i)) == null) {
    hm.put(al.get(i), new Integer(1));
    } else {
    hm.put(al.get(i), Integer
    .parseInt(hm.get(al.get(i)).toString()) + 1);
    }
    }
    Object o[] = (Object[]) hm.values().toArray();
    Arrays.sort(o);
    Integer maxValue = (Integer) o[(o.length - 1)];
    Set set = hm.entrySet();
    Iterator itr = set.iterator();
    while (itr.hasNext()) {
    Map.Entry me = (Entry) itr.next();
    if (me.getValue().equals(maxValue)) {
    System.out.println(me.getKey() + " 出现次数最多,共" + me.getValue()
    + "次");
    } else {
    System.out.println(me.getKey() + " 出现 " + me.getValue() + "次");
    }
    }
    }
    }