编写程序,读取在1到100之间的整数,然后计算每个数出现的次数。输出结果不能有重复(

如2出现的次数为3,则下面不能再出现这句,,求高手解决

import java.util.*;

/*
* 我给你一个java编写的,你可以在控制台选择输入多少个数,你可以输入任意的整数,然后统计其中
* 每个数的出现的次数!
*/
public class StatisticsClass {
//创建一个int类型的数组用于储存你输入的整数
private static int[] myArray;
//创建一个TreeMap类型的集合用于存储你输入的整数以及他们各自出现的次数
private static Map<Integer,Integer> myMap = new TreeMap<Integer,Integer>();

public void statisticsMethod(){
Set<Integer> keySet = myMap.keySet();
Iterator<Integer> iteratorMap = keySet.iterator();
for(int i = 0;i < myArray.length;i++){
boolean flag = false;
while(iteratorMap.hasNext()){
if(myArray[i] == iteratorMap.next().intValue()){
flag = true;
}
}
if(flag){
break;
}else{
myMap.put(myArray[i], 0);
}
}
//到现在为止,你输入的数里面我们将出现过的已经放入map中,但是呢,次数还没有统计,默认为0
Set<Integer> keySet2 = myMap.keySet();
Iterator<Integer> iteratorMap2 = keySet2.iterator();
while(iteratorMap2.hasNext()){
int key = iteratorMap2.next();
int time = 0;
for(int i = 0;i < myArray.length;i++){
if(myArray[i] == key){
time++;
}
}
myMap.put(key, time);
}
//到现在为止,我们已经统计好了次数,也就是完成了绝大部分的工作,下面就是把它们打印出来
Set<Integer> keySet3 = myMap.keySet();
Iterator<Integer> iteratorMap3 = keySet3.iterator();
while(iteratorMap3.hasNext()){
int key = iteratorMap3.next();
System.out.println(key + "出现的次数为:" + myMap.get(key));
}

}

public static void main(String[] args) {
System.out.println("请输入你想输入多少个数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
myArray = new int[n];
System.out.println("请依次输入你想输入的数:");
for(int i = 0;i < n ;i++){
System.out.println("请你输入第" + (i + 1) + "个数:");
myArray[i] = scanner.nextInt();
}
scanner.close();
new StatisticsClass().statisticsMethod();
}
}
//方法还有点繁琐,还可以改进,从面向对象和安全性方面都可以改进,但是功能没问题,完全达到要求,而且更强大!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-20
实现过程
1.过滤这100个数将这100个数中出现了多少个不重复的数字放入一个数组
2.循环这个数组,循环取出里面的数,计算出此数在原数组中也就是之前生成的100个数中出现多少次

你就这么实现吧,很简单两层的for循环就搞定了追问

能给个例子么

本回答被网友采纳
第2个回答  2017-09-13
import java.util.Scanner;

public class Exercise07_03 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter the integers between 1 and 100:");
int[] numbers = new int[101];
int a = input.nextInt();
//输入以0结束
while (a !=0){
numbers[a]++;
a = input.nextInt();
}
for(int i = 1;i < numbers.length;i++){
if(numbers[i] > 0){
System.out.println(i +" occurs "+numbers[i]
+ (numbers[i]>1?" times ":" time "));
}
}
}
}
第3个回答  2012-11-20
首先要明确一点,将你所有的数都放在数组data中;代码如下:
public void fun(int[] data){
int[] flag=new int[100]; //用来存放1到100出现的次数

for(int i=0;i<data.length;i++){

flag[data[i]-1]++; //对应的次数加一
}

for(int i=0;i<100;i++){

System.out.println(i+1+"出现的次数是:"+flag[i]);
}

}追问

我现在是初学的,就用简单的主函数 加SCNNER输入 用FOR循环可以实现么