关于#java#的问题,如何解决?

img

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        int max=0,min=0,a=0;
        float aver=0.0f,sum = 0.0f;
         Scanner sc = new Scanner(System.in);
         int arr[] = new int[10];
         int brr[] = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        max = arr[0];

            for (int i = 0; i < arr.length ; i++) {
                if(max0];
           for (int j = 0; j < arr.length ; j++) {
            if(min>arr[j])
                min = arr[j];
            }
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] % 2 == 0) {
                brr[i] = arr[i];
                a++;
            }
        }
        for (int i = 0; i < 10; i++) {
            sum = sum+(float)brr[i];
        }
         aver = sum / a;
        System.out.println("最大值是"+max);
        System.out.println("最小值是"+min);
        System.out.println("偶数的个数是"+a);
        System.out.println("偶数的平均值是"+aver);
    }
}

img


如何修改?


 for (int i = 0; i < 10; i++) {
            sum = sum+(float)brr[i];
        }

这肯定不对啊,偶数数量不确定啊,你怎么就for循环10次了呢???
这个需求完全一个循环就可以解决的事,被你搞得这么麻烦

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        int max=0,min=0,num=0;
        float sum = 0.0f;
         Scanner sc = new Scanner(System.in);
         int arr[] = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
            if(arr[i] > arr[max])
                max = i;
            if(arr[i] < arr[min])
                min = i;
            if(arr[i]%2==0)
            {
                sum += arr[i];
                num++;
            }
        }
    
        System.out.println("最大值是"+arr[max]);
        System.out.println("最小值是"+arr[min]);
        System.out.println("偶数的个数是"+num);
        System.out.println("偶数的平均值是"+sum/num);
    }
}

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这段代码似乎没有明显的问题,但是可以进行一些优化和改进。以下是一些建议:

  1. 添加注释
    为了方便代码的阅读和理解,可以添加注释来说明代码的功能和逻辑。

  2. 使用foreach循环
    可以使用foreach循环遍历数组,这样可以使代码更加简洁和易读。

  3. 遍历数组时使用数组的长度属性
    可以使用数组的length属性来获取数组的长度,这样可以避免硬编码数组的长度,提高代码的可维护性。

  4. 使用try-with-resources语句处理Scanner对象
    可以使用try-with-resources语句来自动关闭Scanner对象,避免资源泄漏。

  5. 使用标准库的方法
    Java标准库提供了很多有用的方法,例如Arrays.sort()可以对数组进行排序,可以使用该方法来获取数组的最大值和最小值。

根据以上建议,您可以将代码修改为如下所示:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[10];
        int[] brr = new int[10];
        int a = 0;
        float sum = 0.0f, aver = 0.0f;

        // 读入数组
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }

        // 获取最大值和最小值
        int max = arr[0], min = arr[0];
        for (int x : arr) {
            if (x > max) max = x;
            if (x < min) min = x;
        }

        // 获取偶数的个数和平均值
        for (int x : arr) {
            if (x % 2 == 0) {
                brr[a++] = x;
                sum += x;
            }
        }
        aver = a > 0 ? sum / a : 0;

        // 输出结果
        System.out.println("最大值是" + max);
        System.out.println("最小值是" + min);
        System.out.println("偶数的个数是" + a);
        System.out.println("偶数的平均值是" + aver);

        // 关闭Scanner对象
        sc.close();
    }
}


希望这些建议对您有所帮助!

目测代码没什么问题, sum = sum+(float)brr[i];这里不需要转float,当然转了也没事
代码可以放在同一个for循环里就能算出所有的东西了