java 为什么用for循环填充数组时数组中有几个0

rqqzpn5f  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(111)
import java.util.Arrays;
import java.util.Scanner;

public class Sieth {
    public static void main(String[] args) {
        Scanner bound = new Scanner(System.in);
        int n = bound.nextInt();

        int[] list = new int[n];

        for (int f = 2; f <= n - 1; f++) {

            list[f] = f;
        }

        System.out.println(Arrays.toString(list));

    }
}

我想把数组从2填充到n,当我给n赋值20的时候,这个数组会包含不需要的几个0,而最后一个数字,实际上应该是20,却不是19,因为n减1,否则会导致异常,为什么?
具有输入和输出的会话示例:

20
[0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
jum4pzuy

jum4pzuy1#

您将从2开始循环。

for (int f = 2; f <= n - 1; f++)

因此循环中的第一个条目在list[2] = 2中;并且列表[0]和列表[1]被设置为0。

eqqqjvef

eqqqjvef2#

我想把数组从2填充到n
数组是零索引的,所以你只能把它们填充到n - 1索引。例如,如果我们有int[] arr = new int[3],那么可用的索引是:

arr[0], arr[1], arr[2]

arr[3]将导致索引越界异常。
阵列将包含不期望的几个0
因为int的默认值是0。如果您希望在此处看到null,请改用Integer
数组中的最后一个数字,实际上应该是20,而不是19
不,应该是19。因为f <= n - 1;-〉19 <= 20 - 1为真,但20 <= 20 - 1;为假,循环将终止。

相关问题