1. 输入1到100之间的任意整数,然后计算这些整数中每个数出现的次数。
例如:输入 2,20,32,18,
输出:0--->1次,1---->1次,2---->3次,3---->1次,8---->1次
@Test
//1.输入1到100之间的任意整数,然后计算这些整数中每个数出现的次数。
public void work01() {
int[] arr= {};
System.out.println("请输入1-100以内的整数:");
for(int i=0;i<5;i++) {
Scanner sc= new Scanner(System.in);
arr = Arrays.copyOf(arr, arr.length+1);
arr[i]=sc.nextInt();
}
int[][] num = new int[10][2]; //存储个位数以及每个数的个数
for (int i = 0; i < 10; i++) {
num[i][0]=i;
}
int a = -1; //个位数
int b = -1; //十位数
for (int i = 0; i < arr.length; i++) {
if(arr[i]<10) {
a=arr[i]%10;
}else if(arr[i]>=10) {
a = arr[i]%10;
b = arr[i]/10;
}
for (int j = 0; j < num.length; j++) {
if(a==num[j][0]) {
num[j][1]++;
}if(b==num[j][0]) {
num[j][1]++;
}
}
}
for (int j = 0; j < num.length; j++) {
if(num[j][1]!=0){
System.out.println(num[j][0]+"---->"+num[j][1]+"次");
}
}
}
请输入1-100以内的整数:
23
12
12
15
96
1---->3次
2---->3次
3---->1次
5---->1次
6---->1次
9---->1次
其中遇到的问题:(已修复)
bug1:个位数和十位数初始化为0
bug2:条件判断为大于小于10的,忽略了10
bug3:若输入的数整数是两个相同的数(11,22,88);则计算个数的地方会出错,不能用if...else..if,应该是用if
2. 输入10个个位整数,去掉重复数字,并由大到小排序
@Test
//2.输入10个个位整数,去掉重复数字,并由大到小排序
public void work02() {
int[] arr = new int[10];
int chongfu = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入10个个位数:");
for(int i=0;i<10;i++) {
arr[i]=sc.nextInt();
}
System.out.println("用户输入的数字:"+Arrays.toString(arr));
Arrays.sort(arr);
//将重复的数赋值为10 从小到大排序后 10会排序到最后
for (int i = 0; i < arr.length-1; i++) {
if( arr[i]==arr[i+1]) {
arr[i]=10;
chongfu++;
}
}
Arrays.sort(arr);
int[] arr2 = new int[arr.length-chongfu];
for (int i = 0; i < arr2.length; i++) {
arr2[i]=arr[i];
}
System.out.println("处理后的数字:"+Arrays.toString(arr2));
}
请输入10个个位数:
1
2
5
6
9
8
3
5
4
8
用户输入的数字:[1, 2, 5, 6, 9, 8, 3, 5, 4, 8]
处理后的数字:[1, 2, 3, 4, 5, 6, 8, 9]
3.有两个整数型数组,长度相同,输入数组各项,完成输入后,判断两个数组的每个数组位置的值是否相同,如果都相同,则输出true,反之则输出false
public void work03() {
int[] arr = new int[5];
int[] arr1 = new int[5];
boolean isok = false;
System.out.println("请输入第一个数组的元素");
Scanner sc = new Scanner(System.in);
for(int i = 0;i<arr.length;i++) {
arr[i]=sc.nextInt();
}
System.out.println("请输入第二个数组的元素");
Scanner sc1 = new Scanner(System.in);
for(int i = 0;i<arr1.length;i++) {
int num1 = sc.nextInt();
arr1[i]=num1;
}
for(int i = 0;i<arr.length;i++) {
if(arr[i]==arr1[i]) {
isok = true;
}else {
isok = false;
break;
}
}
if(isok) {
System.out.println("两个数组相同"+true);
}else {
System.out.println("两个数组不相同"+false);
}
}
请输入第一个数组的元素
1
2
3
4
5
请输入第二个数组的元素
1
2
3
4
5
两个数组相同true
请输入第一个数组的元素
1
2
3
5
6
请输入第二个数组的元素
2
5
78
9
16
两个数组不相同false
4.手动输入一个长度为10的数组,判断数组中是否存在四个连续相等的数值,如果存在则输出true,反之输出false
public void work04() {
int[] arr = new int[10];
boolean isok = false;
System.out.println("请输入10个数字:");
Scanner sc = new Scanner(System.in);
for(int i = 0;i<arr.length;i++) {
arr[i]=sc.nextInt();
}
for(int i = 0;i<arr.length;i++) {
if(i<(arr.length/2+2) && arr[i]==arr[i+1]
&& arr[i+1]==arr[i+2] && arr[i+2]==arr[i+3]) {
isok = true;
break;
}else {
isok = false;
}
}
if(isok) {
System.out.println("数组中有四个连续相等的数值"+true);
}else {
System.out.println("数组中没有四个连续相等的数值"+false);
}
}
请输入10个数字:
2
5
59
89
23
26
26
26
26
1
数组中有四个连续相等的数值true
请输入10个数字:
1
1
1
23
23
23
56
59
48
23
数组中没有四个连续相等的数值false
5. 手动输入两个数组,将两个数组整合成为一个数组,并由大到小进行排序。
public void work05() {
int[] arr = new int[5];
int[] arr1 = new int[5];
int[] total = new int[10];
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数组的元素");
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
}
System.out.println("第一个数组为:"+Arrays.toString(arr));
System.out.println("请输入第二个数组的元素");
for (int i = 0; i < arr1.length; i++) {
arr1[i]=sc.nextInt();
}
System.out.println("第二个数组为:"+Arrays.toString(arr1));
for (int i = 0; i < arr.length; i++) {
total[i]=arr[i];
total[arr.length+i]=arr1[i];
}
Arrays.sort(total);
System.out.print("合并后的数组为:");
for (int i = 0; i < total.length; i++) {
System.out.print(total[total.length-1-i]+" ");
}
}
}
请输入第一个数组的元素
1
2
56
89
12
第一个数组为:[1, 2, 56, 89, 12]
请输入第二个数组的元素
23
56
48
78
99
第二个数组为:[23, 56, 48, 78, 99]
合并后的数组为:99 89 78 56 56 48 23 12 2 1