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);
}
}
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ᴼᴾᴱᴺᴬᴵ
这段代码似乎没有明显的问题,但是可以进行一些优化和改进。以下是一些建议:
添加注释
为了方便代码的阅读和理解,可以添加注释来说明代码的功能和逻辑。
使用foreach循环
可以使用foreach循环遍历数组,这样可以使代码更加简洁和易读。
遍历数组时使用数组的长度属性
可以使用数组的length属性来获取数组的长度,这样可以避免硬编码数组的长度,提高代码的可维护性。
使用try-with-resources语句处理Scanner对象
可以使用try-with-resources语句来自动关闭Scanner对象,避免资源泄漏。
使用标准库的方法
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循环里就能算出所有的东西了