Java 输入1~100的整数,当读入负数时结束,统计输出每个数的数量
关键:
1.解决数组长度增加,同时要保留数组的元素值
2.统计相同元素值
原理:使用countArray[item]++
package com.MyJava;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
int[] a = new int[0];
int[] b = new int[0];
int i = 0;
while (num >= 0) {
System.out.println("请输入0-100的整数:");
num = scan.nextInt();
// 如果输入了负数,立即break循环
if (num < 0)
break;
// 数组a和b相互copy,就像球在左右手之间来回交换
a = Arrays.copyOf(b, i + 1);
a[i] = num;
b = Arrays.copyOf(a, i + 1);
System.out.print("当前输入的整数有:");
for (int item : b) {
System.out.print(item + " ");
}
System.out.println();
i++;
}
System.out.println("输入了负数,已退出");
// 统计0-100的整数个数
int[] countArray = new int[101];
// 统计每个元素的出现次数
for (int item : a) {
countArray[item]++;//数组a当中元素数值=item时,item++
}
for (int j = 0; j < countArray.length; j++) {
if (countArray[j] > 0) {
System.out.println("数字 " + j + " 出现了 " + countArray[j] + " 次");
}
}
}
}
原理:用两个相同数组比较元素值后,相同的元素数值设为-1
package com.MyJava;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
int[] a = new int[0];
int[] b = new int[0];
int i = 0;
while (num >= 0) {
System.out.println("请输入0-100的整数:");
num = scan.nextInt();
// 如果输入了负数,立即break循环
if (num < 0)
break;
// 数组a和b相互copy,就像球在左右手之间来回交换
a = Arrays.copyOf(b, i + 1);
a[i] = num;
b = Arrays.copyOf(a, i + 1);
System.out.print("当前输入的整数有:");
for (int item : b) {
System.out.print(item + " ");
}
System.out.println();
i++;
}
System.out.println("输入了负数,已退出");
// 此时数组a=b,比较元素值,若相同则赋值为-1,就能排除重复计数
for (int j = 0; j < a.length; j++) {
int n = 0;
for (int k = 0; k < b.length; k++) {
if (a[j] == b[k]) {
b[k] = -1;
n++;
}
}
if (n > 0)
System.out.print(a[j] + ":" + n + "个;");
}
}
}
请输入0-100的整数:
1
当前输入的整数有:1
请输入0-100的整数:
2
当前输入的整数有:1 2
请输入0-100的整数:
2
当前输入的整数有:1 2 2
请输入0-100的整数:
3
当前输入的整数有:1 2 2 3
请输入0-100的整数:
4
当前输入的整数有:1 2 2 3 4
请输入0-100的整数:
4
当前输入的整数有:1 2 2 3 4 4
请输入0-100的整数:
4
当前输入的整数有:1 2 2 3 4 4 4
请输入0-100的整数:
0
当前输入的整数有:1 2 2 3 4 4 4 0
请输入0-100的整数:
0
当前输入的整数有:1 2 2 3 4 4 4 0 0
请输入0-100的整数:
-1
输入了负数,已退出
1:1个;2:2个;3:1个;4:3个;0:2个;