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
是的,这段代码有问题。在每次循环中,都会创建一个新的数组,所以最终的数组只会包含最后一次循环中生成的数字。此外,循环中的 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);
原文地址: https://www.cveoy.top/t/topic/eHdv 著作权归作者所有。请勿转载和采集!