Java输入4个整数求和平均值最接近的值以及下标
在日常生活中,我们经常需要对一组数据进行处理和分析。有时候,我们需要找到一组整数中求和平均值最接近的值,以及该值所在的位置。在本文中,我们将使用Java编程语言来实现这一功能,并通过代码示例来详细说明。
问题分析
首先,我们需要明确问题的要求。给定4个整数,我们需要计算它们的和,并找到与平均值最接近的整数。同时,我们还需要确定该整数在原始数组中的位置。
为了解决这个问题,我们可以使用以下步骤:
- 输入4个整数。
- 计算这4个整数的和以及平均值。
- 遍历整个数组,找到与平均值最接近的整数,并记录其位置。
- 输出最接近的整数和其位置。
代码实现
下面是用Java编写的示例代码:
import java.util.Scanner;
public class ClosestNumber {
public static void main(String[] args) {
int[] numbers = new int[4];
Scanner scanner = new Scanner(System.in);
System.out.println("请输入4个整数:");
for (int i = 0; i < 4; i++) {
numbers[i] = scanner.nextInt();
}
int sum = 0;
for (int number : numbers) {
sum += number;
}
double average = (double) sum / numbers.length;
int closestNumber = numbers[0];
int closestIndex = 0;
int minDiff = Math.abs(numbers[0] - (int) average);
for (int i = 1; i < numbers.length; i++) {
int diff = Math.abs(numbers[i] - (int) average);
if (diff < minDiff) {
minDiff = diff;
closestNumber = numbers[i];
closestIndex = i;
}
}
System.out.println("最接近平均值的整数是:" + closestNumber);
System.out.println("该整数在数组中的位置是:" + closestIndex);
}
}
代码解释
让我们逐行解释一下上面的代码:
int[] numbers = new int[4];
- 创建一个长度为4的整型数组来存储输入的4个整数。Scanner scanner = new Scanner(System.in);
- 创建一个Scanner对象,用于读取用户输入。for (int i = 0; i < 4; i++) { numbers[i] = scanner.nextInt(); }
- 循环读取用户输入的4个整数,并将它们存储在数组中。int sum = 0; for (int number : numbers) { sum += number; }
- 计算数组中所有整数的和。double average = (double) sum / numbers.length;
- 计算数组中所有整数的平均值。int closestNumber = numbers[0]; int closestIndex = 0; int minDiff = Math.abs(numbers[0] - (int) average);
- 初始化变量closestNumber
为数组的第一个元素,closestIndex
为0,minDiff
为第一个元素与平均值的差的绝对值。for (int i = 1; i < numbers.length; i++) { int diff = Math.abs(numbers[i] - (int) average); if (diff < minDiff) { minDiff = diff; closestNumber = numbers[i]; closestIndex = i; } }
- 遍历整个数组,计算每个元素与平均值的差的绝对值,如果差比minDiff
小,则更新minDiff
、closestNumber
和closestIndex
。System.out.println("最接近平均值的整数是:" + closestNumber); System.out.println("该整数在数组中的位置是:" + closestIndex);
- 输出最接近平均值的整数和它在数组中的位置。
状态图
下面是表示代码执行过程的状态图:
stateDiagram
[*] --> 输入整数
输入整数 --> 计算和平均值
计算和平均值 --> 查找最接近的整数
查找最接近的整数 --> 输出结果
输出结果 --> [*]
序列图
下面是表示代码