package szprctice;
public class Practice1 {
/*
定义一个方法传入一个int类型数组,输出这个数组中每一个数字及其出现的个数
例如 传入数组[1,2,2,2,3,3,4,4,4,4]
打印结果:
数字1出现了1次
数字2出现了3次…
如:原数组: int[] arr = {1,2,2,2,3,3,4,4,4,4,22,0,0}
记录出现的元素 int[] ele = {1,2,3,4,22,0}
记录元素出现的次数 int[] count = {1,3,2,4,1,2}
*/
//1.定义主方法
public static void main(String[] args) {
int[] arr = {1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 22, 0, 0};
getPractice(arr);
}
public static void getPractice(int[] arr) {
//定义一个新数组,用来存放不重复的元素
int[] ele = new int[arr.length];//因为不确定新数组的长度,但一定不超过原数组,所以用原数组做为新数组的长度
//再定义一个新数组,用来存放不重复数组的个数(它的长度和新数组的长度一定是一致的)
int[] count = new int[arr.length];
//往新数组中添加一个初始值,把原数组的第一个值加进去
ele[0] = arr[0];
//所以count[]中第一个值,初始为1
count[0] = 1;
//因为新数组的长度,我们是未知的,所以定义一个变量代表新数组的长度
int index = 1;
//遍历原数组,取出原数组中的每一个值
for (int i = 1; i < arr.length; i++) {
//定义一个变量代替数组中的每一个值
int temp = arr[i];
/*依次拿原数组中的每一个值去和ele新数组中的值去比较,
如果ele中存在这一个值,就把count数组对应的索引+1,如果没有
相等的值,则在ele数组中新添,对应的索引上附上1。*/
boolean isFind = false;//这一步也很关键
for (int j = 0; j < index; j++) {
if (temp == ele[j]) {
count[j]++;
isFind = true;
}
}
if (!isFind) { //这一步一定要定义在内循环的外面
ele[index] = temp;
count[index] = 1;
index++;
}
}
for (int i = 0; i < index; i++) { //关键:这一步<的是index,因为(ele.length)并不是我们要的数组长度
System.out.println("数字" + ele[i] + "出现了" + count[i] + "次…");
}
}
}
数组小题
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 中数组的使用(一维数组和二维数组)
本文详细的介绍了,在Java 中数组的使用,并对其内存存在形式进行了详细的分析。
数组 一维数组 二维数组 java基础 -
指针趣味小题
这小段代码帮助理解下指针和对象的大小,& 和*的作用#include <stdio.h
#include ios #define -
C语言小题1
1.有一组特殊的数列,其定义如下
输入数据为一个数组的下标 -
3.6 小题目
逗号表达式 for循环语法
排序算法 c语言 算法 #include 逗号表达式 -
java form表单写修改
Jstl、el、jdbc、dbcp、servlet的CRUD示例1 目录结构及说明
java form表单写修改 web string null list