是的,这段代码有问题。在每次循环中,都会创建一个新的数组,所以最终的数组只会包含最后一次循环中生成的数字。此外,循环中的 if 语句无法正确检测数组中是否有 0,因为它只检查数组中的最后一个元素。应该使用一个变量来记录插入 0 的位置,并在循环结束后仅输出数组中的前几个元素。正确的代码如下:

public static void practice1(){
    int[] arr = new int[100]; // 假设数组最大长度为 100
    int sum = 0;
    int num = 0;
    int i;
    for(i = 0; i < arr.length; i++){
        arr[i] = (int)(Math.random()*100);
        sum += arr[i];
        if(arr[i] == 0){
            break;
        }
    }
    int[] newArr = Arrays.copyOf(arr, i); // 仅输出前 i 个元素
    System.out.println(Arrays.toString(newArr));
    System.out.println(i);
    System.out.println(sum);
public static void pracitice1 int arr; int temp = 0; int sum = 0; int num = 0; forint i = 0;;i++ temp++; arr = new inttemp; arri = i

原文地址: https://www.cveoy.top/t/topic/eHdv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录