array的作业,请老师您检查下
来源:7-14 测评作业

unbreakable_全栈
2024-11-19
import java.util.Arrays;
public class WorkArrayDemo {
public static void main(String[] args) {
// 1、将表格中的数据存储到数组中
staticData();
DynamicInitialization();
// 2、遍历数组,将大于 100 的元素打印输出
int[] arr = {16, 125, 13, 246, 55, 18, 26, 160, 99, 120, 188};
// 调用函数打印大于100的元素
printElementsGreaterThan100(arr);
// 3、找出数组中下标为偶数的所有元素
/**
* 问题分析:
* 数组索引错误:在Java中,数组的索引是从0开始的,但代码中的注释却从arr[1]开始,这可能会导致混淆。
* 偶数判断逻辑正确:代码通过检查每个元素的索引是否为偶数来确定该元素是否是偶数(即下标为偶数的元素)。
* 偶数判断逻辑正确:代码通过检查每个元素的索引是否为偶数来确定该元素是否是偶数(即下标为偶数的元素)。
* 优化建议:
* 简化输出语句以去除不必要的字符。
* 更新注释以确保与实际代码一致。
*/
int[] arr_3 = {16, 125, 13, 246, 55, 18, 26, 160, 99, 120, 188};
// 调用函数来打印所有偶数索引的元素
printEvenIndexedElements(arr_3);
// 4、小慕周几的运动步数最多?
int[] steps = {22716, 16512, 19472, 25720, 15767, 12898, 21169};
// 调用函数来找出步数最多的一天并打印结果
printMaxSteps(steps);
// 5、计算每个人的平均分数
// 评委对每位选手的打分数据
double[][] scores = {
{99, 96, 97.5, 89, 95.5, 93, 99, 95, 98, 99.5},
{91, 95.5, 97, 92, 99, 98, 94, 95.5, 96, 99},
{90.5, 92, 99, 99.5, 95, 90, 97, 96, 93, 91.5},
{98, 95, 95.5, 99, 92, 93.5, 93, 97.5, 96, 99.5},
{95, 91.5, 93, 96, 98.5, 99, 94, 96.5, 95.5, 92}
};
calculateAverageScores(scores);
// 6、在“第5题”的基础上,将个人平均成绩排序输出
sortAverageScores();
}
// 6、在“第5题”的基础上,将个人平均成绩排序输出
public static void sortAverageScores() {
// 存储平均成绩的数组
double[] averageScores = {96.15, 95.7, 94.35, 95.9, 95.1};
for (int i = 0; i < averageScores.length - 1; i++) {
for (int j = 0; j < averageScores.length - i - 1; j++) {
if (averageScores[j] > averageScores[j + 1]) {
// 交换两个元素的值
double temp = averageScores[j];
averageScores[j] = averageScores[j + 1];
averageScores[j + 1] = temp;
}
}
System.out.print("第" + (i+1) + "轮排序后的结果:");
for (double k : averageScores) { // k 表示数组中的元素值
System.out.print(k + " "); // 打印数组元素值和空格作为分隔符
}
System.out.println(); // 在每轮结果后换行,以便清晰查看每轮排序的结果
}
}
// 5、计算每个人的平均分数
public static void calculateAverageScores(double[][] scores) {
for (int i = 0; i < scores.length; i++) {
double sum = 0;
for (int j = 0; j < scores[i].length; j++) {
sum += scores[i][j];
}
double average = sum / scores[i].length;
System.out.println("第" + (i + 1) + "名选手平均得分: " + String.format("%.2f", average));
}
}
// 4、小慕周几的运动步数最多?
// 定义一个函数,找出数组中最大的步数及其对应的周几
public static void printMaxSteps(int[] steps) {
// 假设最大值是第一个元素
int maxSteps = steps[0];
int maxIndex = 0; // 初始化最大步数对应的索引
// 遍历数组找到最大的步数值及其索引
for (int i = 1; i < steps.length; i++) {
if (steps[i] > maxSteps) {
maxSteps = steps[i];
maxIndex = i;
}
}
// 打印出周几的步数最多以及具体步数
System.out.println("周" + getWeekday(maxIndex + 1) + "的运动步数最多,是:" + maxSteps);
}
// 定义一个函数,根据数字返回对应的周几
public static String getWeekday(int dayNumber) {
switch (dayNumber) {
case 1: return "一";
case 2: return "二";
case 3: return "三";
case 4: return "四";
case 5: return "五";
case 6: return "六";
case 7: return "日";
default: return "未知";
}
}
// 3、找出数组中下标为偶数的所有元素
/**
* 打印数组中所有偶数索引的元素
*
* @param array 要处理的整数数组
*/
private static void printEvenIndexedElements(int[] array) {
for (int i = 0; i < array.length; i += 2) {
System.out.println("Element at index " + i + ": " + array[i]);
}
}
// 2、遍历数组,将大于 100 的元素打印输出
// 定义一个函数,打印数组中所有大于100的元素
public static void printElementsGreaterThan100(int[] array) {
for (int value : array) {
if (value > 100) {
System.out.println(value);
}
}
}
// 1、静态初始化(已知所有元素)
public static void staticData () {
// 表格中的数据
double[] tableData = {120, 95.5, 88, 125.9, 69, 76.7};
// 打印数组以验证数据是否正确存储
for (double value : tableData) {
System.out.print(value + ",");
// System.out.println(value);
}
}
// 1、动态初始化(可能需要根据条件添加元素)
// 如果您需要在运行时根据某些条件来决定数组的长度或值,那么可以使用动态初始化。
public static void DynamicInitialization () {
// 假设我们有一个方法可以获取表格数据的行数
int numRows = getTableRowCount(); // 这里只是一个占位符
// 创建一个指定长度的数组
double[] dynamicArray = new double[numRows];
// 根据实际情况填充数据
if (numRows > 0) {
dynamicArray[0] = 120;
dynamicArray[1] = 95.5;
dynamicArray[2] = 88;
dynamicArray[3] = 125.9;
dynamicArray[4] = 69;
dynamicArray[5] = 76.7;
}
// 打印数组以验证数据是否正确存储
System.out.println(Arrays.toString(dynamicArray));
}
private static int getTableRowCount() {
// 这里应该返回实际的行数
return 6; // 假设表格中有6行数据
}
}
1回答
-
彭彭老师
2024-11-20
同学的作业完成的非常好,基础知识掌握扎实,逻辑清晰,每个题都添加了注释。
关于第3题,代码是正确的,对问题的分析不是太准确,这个题小慕的主要问题是数组的取值上限错误,原因如下:
数组的下标范围是 0 ~ arr.length-1,i 的取值上限要小于数组长度,等于数组长度将会发生数组越界。小慕的程序之所以没有报错,是因为数组 arr 的长度是 11,当 i = 11时,if 条件不成立,if 语句块没有执行,因此没有抛出数组越界的错误。
其余都没有问题。
00