题目
package test0805; import java.util.Arrays; import java.util.Scanner; public class Test6 { public static void main(String[] args) { //第一步获取 键盘输入值 //第二步 把键盘输入值放入一个数组里 //声明一个变量 把 number的值取出来放入 新的数组 //3.1用来接收拼接的字符串 String numStr = ""; // 1.使用Scanner类可以很方便的获取用户的键盘输入 system.in 代表标准输入 ,就是键盘输入; Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int number = sc.nextInt(); if (number == 0) { break; } numStr += ","+ number; } //3.2去掉字符串 ,4,5,6,2 -> 4,5,6,2 numStr = numStr.replaceFirst(",",""); //打印输出看一下 //3.3System.out.println(numStr);现在获取的字符串以去除掉前面的,号;现在依然是String类型数据 需要转换成int的数据 String[] numsStrArray = numStr.split(","); //打印输出看 4,5,6,2 -> ["4","5","6","2"] // System.out.println(Arrays.toString(numsStrArray)); //3.获取键盘输入的长度 ;3.1先获取拼接的字符串 3.2去掉字符串,3.3转换成int型的数组类型 //2.遍历一下设定的数组获取到了键盘输入的值 但是看到有很多的空索引值也打印出来 // 所以我们把键盘输入的字符长度为arr的长度值 所以先获取键盘输入的长度 //建立一个空的数组并制定数组的长度 int[] arr =new int[numsStrArray.length]; //遍历这个字符串数组 numsStrArray for (int i = 0; i <numsStrArray.length; i++) { //把字符串类型 转换成 arr[i] int类型数组 arr[i] = Integer.parseInt(numsStrArray[i]); //输出int类型数组 查看 // System.out.println(arr[i]); 现在已转换int型数组 arr } //下面做重复的加一 首先写两个数组 一个计数索引 一个放数组元素 int[] numArray = new int[numsStrArray.length];//放置数字 //计数索引 int countIndex = 0; //计算数字出现的数字次数 int[] timeArray = new int[numsStrArray.length]; //遍历arr数组 for (int num :arr){ //去numArray查找是否含有num这个数 //Arrays.binarySearch 这个方法的意思在数组numArray中是否存在num元素 int numArrayIndex = Arrays.binarySearch(numArray, 0, countIndex, num); //如果返回值 <0 if (numArrayIndex < 0 ) { //num 这个值放入number 数组 numArray[countIndex] = num; timeArray[countIndex] = 1; countIndex++; }else{ timeArray[numArrayIndex] += 1; } } System.out.println("统计结束,统计结果如下"); for (int i = 0; i <countIndex ; i++) { System.out.println("数字"+numArray[i] +"出现了"+ timeArray[i]+"次"); } } }
结果如图: