Java练习题-03

这篇博客介绍了四个关于数组的操作:计算1到100之间整数的出现次数,去重并降序排列个位数,判断两个数组是否相同,以及查找连续相等数值。示例代码包括输入处理、数组遍历和排序等基本编程任务,适合初学者练习。
摘要由CSDN通过智能技术生成

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 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值