Java数组作业题

这篇博客探讨了Java中处理数组的各种操作,包括找到一维数组的最大值和最小值并求和,交换数组中最大值和最小值,比较两个数组并交换最大值和最小值,实现竞赛评分系统去除最高分和最低分后的平均分计算,以及如何从包含零的数组中创建新数组仅保留非零元素。最后,提供了一道求输入数以内所有奇数之和的题目作为复习练习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 计算一维数组中最大值和最小值的数据之和;
package org.oracle.test;

public class Arr01 {
	public static void main(String[] args) {
		int[] arr = { 6, 3, 2, 7, 9, 1, 5, 4, 4, 4, 10, 9 };
		int max = arr[0];
		int min = arr[0];
		for (int i = 1; i < arr.length; i++) {
			if (max < arr[i]) {
				max = arr[i];
			} else if (min > arr[i]) {
				min = arr[i];
			}
		}
		System.out.println(min + max);
	}
}

Console:
11

  1. 把一个数组中的最大值和最小值进行互换;
package org.oracle.test;

import java.util.Arrays;
import java.util.Scanner;

public class Arr02 {
	public static void main(String[] args) {
		int arr[] = {4,2,1,6,8,5,10};
		int max = 0;
		int min = 0;
		for (int i = 1; i < arr.length; i++) {
			if (arr[max] < arr[i]) {
				max = i;
			}
			if (arr[min] > arr[i]) {
				min = i;
			}
		}
		int temp = arr[max];
		arr[max] = arr[min];
		arr[min] = temp;
		for (int a : arr) {
			System.out.print(a + " ");
		}

	}
}

Console:
4 2 10 6 8 5 1

  1. 定义两个int类型的数组,把第一个数组的最大值和第二个数组的最小值进行互换,然后遍历两个数组(数组中不包含重复的元素);
package org.oracle.test;

import java.util.Arrays;

public class Arr03 {
	public static void main(String[] args) {
		int arr1[] = { 1, 3, 5, 7, 9 };
		int arr2[] = { 2, 4, 6, 8, 10 };
		Arrays.sort(arr1);
		Arrays.sort(arr2);
		int temp = arr1[arr1.length-1];
		arr1[arr1.length-1] = arr2[0];
		arr2[0] = temp;
		System.out.print("数组一:");
		for(int a1:arr1) {
			System.out.print(a1+" ");
		}
		System.out.println();
		System.out.print("数组二:");
		for(int a2:arr2) {
			System.out.print(a2+" ");
		}
	}
}

Console:
数组一:1 3 5 7 2
数组二:9 4 6 8 10

  1. (经典案例)请编程实现下面的要求:在编程竞赛中,有10个评委
    通过键盘录入方式为参赛的选手打分(整数),选手的最后得分为:去掉一个最高分和一个最低分后其余8个选手的平均值。(求平均值);
public class Arr04 { //方法一
	public static void main(String[] args) {
		int num[] = new int[10];//创建新数组,定义长度为10
		Scanner input = new Scanner(System.in);
		for(int i = 0 ; i< 10; i++) {
			num[i] = input.nextInt();//键盘录入10个同学的成绩
		}
		int max = num[0];//定义最大值
		int min = num[0];//定义最小值
		for(int i = 1; i < 10;i++) {
			if(max<num[i]) {
				max = num[i];//遍历10个数找到最大值
			}
			if(min>num[i]) {
				min = num[i];//遍历10个数找到最小值
			}
		}
		int sum = 0;
		for(int i =0;i<10;i++) {
			sum+=num[i];//计算出总分数
		}
		System.out.println((sum-min-max)/8.0);//总分数减去最大值和最小值 除以8就是想要的答案
	}
}
package org.oracle.test;

import java.util.Arrays;
import java.util.Scanner;

public class Arr04_2 { // 方法二
	public static void main(String[] args) {
		int num[] = new int[10];
		Scanner input = new Scanner(System.in);
		for (int i = 0; i < 10; i++) {
			num[i] = input.nextInt();
		}
		Arrays.sort(num); //数组排序
		int arr1[] = new int[8];//创建新数组
		System.arraycopy(num, 1, arr1, 0, arr1.length);//数组复制(原数组,原数组起始下标,新数组,新数组起始下标,复制的长度)
		int sum = 0;
		for (int a : arr1) {
			sum += a;  //新数组八个数加起来
		}
		System.out.println("平均成绩为" + sum / 8.0);
	}
}

Console:
8
2
10
8
8
8
8
8
8
8
8.0

  1. 现在有如下的一个数组:
    Int[] arr1 = {1,2,0,5,6,0,2,0,0,4,5,0,7,0,8},要求将以上数组中值为 0的项去掉,将不为0的值存入到一个新的数组,生成的新数组为 int[] arr2 = {1,2,5,6,2,4,5,7,8}
package org.oracle.test;

public class Arr05 {
	public static void main(String[] args) {
		int arr1[] = { 1, 2, 0, 5, 6, 0, 2, 0, 0, 4, 5, 0, 7, 0, 8 };
		int count = 0;
		for (int i = 0; i < arr1.length; i++) {
			if (arr1[i] != 0) {
				count++;
			}
		}
		int arr2[] = new int[count];
		int j = 0;
		for (int i = 0; i < arr1.length; i++) {
			if (arr1[i] != 0) {
				arr2[j++] = arr1[i];
			}
		}
		for (int a : arr2) {
			System.out.print(a + " ");
		}
	}
}

Console:
1 2 5 6 2 4 5 7 8

  1. 复习题,做下面这道题:
    键盘录入一个数,求1(包括1)到这个数(包括)以内的奇数和,输出形式为:
    在这里插入图片描述
package org.oracle.test;

import java.util.Scanner;

public class Arr06 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int num = input.nextInt();
		getSum(num);
	}

	public static void getSum(int num) {
		int j = 0;
		for (int i = 1; i <= num; i += 2) {
			j += i;
			if (i == 1) {
				System.out.print(i);
			} else {
				System.out.print("+" + i);
			}

		}
		System.out.print("=" + j);

	}
}

Console:
请输入一个数:
25
1+3+5+7+9+11+13+15+17+19+21+23+25=169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值