java整数出现次数

【问题描述】

输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。

【输入形式】

先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。

【输出形式】

在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。
【样例输入】

10

0 -50 0 632 5813 -50 9 -50 0 632

【样例输出】

-50 3

0 3

import java.util.Scanner;
public class cishu{
public static void main(String[] args){
int size;
Scanner sc=new Scanner(System.in);
size=sc.nextInt();

int grade1[]=new int[size];
int grade2[]=new int[size];
int grade3[]=new int[size];
for(int i=0;i<size;i++){
grade1[i]=sc.nextInt();}

for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if(grade1[i]==grade1[j]){
grade2[i]++;}}}
int max=grade2[0];

for(int i=0;i<size;i++){
if(max<grade2[i]){
max=grade2[i];}}

int a=0;
for(int i=0;i<size;i++){
if(grade2[i]==max){
grade3[a]=grade1[i];
a++;}}

//paixu
for(int i=0;i<a-1;i++){
for(int j=0;j<a-1-i;j++){
if(grade3[j]>grade3[j+1]){
int temp=grade3[j];
grade3[j]=grade3[j+1];
grade3[j+1]=temp;}
}}

for(int i=0;i<a;i=i+max){
System.out.println(grade3[i]+" "+max);}

}}

此代码是的构造思想是
1.先输入要输入元素的个数
2.将数据输入到组1当中
3.将组1各元素出现的次数记录在组2当中
4.将组2中的最大值(数据出现最多的次数)赋值给max
5.将组1中出现最多次数的元素给到组3
6.将组3元素进行排序
7.将组3元素和出现次数输出,每个数字只输出一次,按照i=i+max输出

以实例来让构造思想更容易理解
1.输入:10
2.输入元素:0 -50 0 632 5813 -50 9 -50 0 632
3.出现次数 :3 3 3 2 1 3 1 3 3 2
4.max=3
5.0 -50 0 -50 -50 0
6.-50 -50 -50 0 0 0
7因为i=i+3;所以输出
-50,3
0,3

本人刚入门java,如有更好的解法,共同学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值