gpt4 book ai didi

java - 使用扫描仪从数组中删除所有零

转载 作者:行者123 更新时间:2023-12-02 03:56:20 31 4
gpt4 key购买 nike

我需要一个数组,它从用户处获取整数,直到输入“0”为止;然后它打印平均值、最大值和最小值。我编写了一个包含 700 个元素的数组,但它损坏了。当我输入 0 时一切正常。问题是当我输入 0 时,它会将 0 作为元素。我以某种方式解决了这个问题,这样它就可以正确计算平均值,但它仍然从某个地方获取一些 0 。比如我输入8,然后是3,然后是0,输出的是平均值是4.000000,最大的是5,最小的是0,但是最小的应该是3。我猜这是因为剩余的 697 个元素被视为 0。

我找到了这个问题的很多答案,但我想在不复制数组或创建新数组的情况下解决它。我可以做些什么来解决这个问题,而无需添加数组或另一个 for 循环或其他东西吗?就像一行意味着“输入 0 时删除所有剩余元素并且不将它们用于任何用途”?

import java.util.Scanner;
import java.util.stream.IntStream;
public class PlayingWithNumbers2 {
private static Scanner input;

public static void main(String[] args) {
input = new Scanner(System.in);
int[] array = new int[700];
System.out.println("Enter numbers enter 0 to end");
int i;
int max = array[0];
int min = array[0];
int a = array[0];
for (i = 0; i < array.length; i++) {
a=input.nextInt();
if(a==0){
break;
}
array[i] = a;
if(array[i]>max)
max = array[i];
else if(array[i]<min)
min = array[i];
}
double sum = IntStream.of(array).sum();
double Ave = sum/i;
System.out.printf(" The Average is %f \n the biggest one is %d \n the smallest one is %d", Ave, max, min);`
}
}

最佳答案

最小值/最大值的问题是两者都初始化为 array[0],这意味着两者都初始化为“0”,因此最小值检查将始终将其保持为 0,因为它低于您输入的任何内容。您还需要删除 else 条件。试试这个

    int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;

然后在循环内将检查更改为

   if(array[i]>max)
max = array[i];

if(array[i]<min)
min = array[i];

关于java - 使用扫描仪从数组中删除所有零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35411046/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com