输出包含的元素少于预期

时间:2016-04-01 00:33:03

标签: java arrays

我自己学习Java,并且学会了从数组中声明,初始化和打印。我尝试过这个练习Basic Arrays,我在网上找到了练习。

这是我的代码:

public class ArrayExerciseTwo {

    public static void main(String[] args) {

        int[] values = new int[1000];

        for (int i = 0; i < values.length; i++) {
            values[i] = (10 + (int)(Math.random() * 89));
        }

        for (int i = 0; i < values.length; i++) {
            if (i == 0) {
                continue;
            }
            // at every 20 elements, print newline
            else if (i % 21 == 0) {
                System.out.println("");
            }

            // otherwise print 2 spaces
            else {
                System.out.print(values[i] + "  ");
            }
        }
    }
}

输出:

61 58 95 56 46 63 31 84 76 93 33 87 12 32 69 93 32 95 52 67
93 59 80 23 15 80 91 51 72 90 75 38 15 86 59 67 44 53 93 26
84 34 50 10 17 55 29 26 80 66 53 76 26 76 31 80 17 20 44 23
16 52 22 79 55 49 83 44 69 95 61 14 93 50 42 88 66 59 65 26
43 84 19 30 82 68 85 25 81 67 61 64 60 18 44 25 53 77 29 14
24 59 48 57 69 23 59 65 71 86 77 71 44 47 40 51 56 51 62 20
91 75 94 61 42 76 58 48 18 32 46 51 12 66 57 14 33 98 58 39
50 40 36 56 74 71 38 64 52 77 45 61 21 85 77 89 57 67 93 18
80 14 97 30 26 81 33 62 78 77 46 58 17 38 80 77 82 56 67 75
66 46 79 72 66 46 88 56 13 69 39 88 56 82 48 87 94 66 57 15
92 46 58 52 68 17 36 98 38 47 56 10 55 36 69 69 64 48 38 24
89 90 10 19 10 66 13 30 52 68 32 96 54 66 69 88 33 23 10 72
78 94 81 48 44 67 72 51 58 70 47 16 41 79 29 57 47 38 55 72
24 97 44 11 64 17 81 72 63 43 94 22 37 91 86 19 79 88 69 33
55 73 44 31 15 90 65 95 13 58 79 80 64 18 12 95 53 43 60 16
56 94 34 30 29 91 19 15 14 60 51 59 26 46 14 26 17 83 74 19
19 50 16 68 69 71 10 33 90 81 38 51 13 63 30 46 36 16 94 21
20 72 42 91 61 16 18 82 76 81 82 49 48 82 94 10 79 50 18 85
47 98 51 18 21 21 92 45 27 44 77 30 20 21 65 60 70 37 87 67
38 65 48 42 76 73 17 24 85 34 61 67 97 39 34 68 66 75 28 96
48 71 25 85 83 18 38 90 29 86 65 22 30 38 49 11 86 50 68 98
56 64 21 96 42 27 80 24 43 67 61 89 28 84 34 98 70 64 69 87
84 76 52 23 40 58 16 28 78 18 94 89 81 37 35 52 18 42 76 24
77 81 37 41 65 65 78 88 96 60 70 56 40 45 41 60 70 77 70 85
74 34 56 26 48 18 33 59 88 16 70 30 77 68 19 96 40 47 72 12
70 75 16 34 32 71 52 79 27 41 91 30 44 12 23 71 78 12 81 88
27 68 58 55 79 80 35 26 67 46 74 25 40 44 34 82 49 94 28 26
59 78 69 12 46 61 16 27 77 34 37 26 60 59 59 82 83 72 35 48
17 42 70 77 45 63 26 70 46 60 74 69 98 11 36 41 35 80 47 67
19 24 58 52 86 96 28 78 18 25 94 19 56 64 58 67 14 44 63 46
22 76 45 92 70 30 35 49 81 77 85 46 62 70 36 29 37 78 76 78
15 31 13 70 24 47 93 66 21 47 82 87 43 18 71 27 96 26 91 69
32 65 47 29 49 64 37 69 38 26 67 21 17 82 59 55 29 22 68 42
19 47 54 75 15 62 43 95 50 77 28 85 82 80 62 32 10 35 31 27
94 83 14 77 83 66 54 60 77 81 68 23 82 86 80 94 87 51 31 88
85 41 40 14 54 72 42 12 15 94 67 76 47 46 70 88 64 94 54 46
12 15 84 74 10 58 43 18 10 12 56 21 71 75 10 49 38 91 71 40
89 62 17 60 45 27 76 79 96 21 87 67 17 62 87 21 63 87 87 50
75 57 17 77 46 45 44 70 10 54 81 88 60 42 59 96 77 93 55 63
67 23 74 31 84 92 96 13 32 24 51 25 18 37 84 73 72 47 33 64
73 75 43 98 83 45 79 44 82 54 11 80 19 23 17 37 41 46 21 92
24 52 66 29 65 16 38 84 83 78 57 62 21 60 82 28 43 72 52 72
80 67 34 85 82 95 19 69 90 53 96 18 47 44 63 88 61 30 94 44
25 15 92 22 17 31 45 42 94 95 98 41 56 34 54 11 38 38 74 82
75 82 79 73 23 64 77 24 18 40 42 29 97 23 43 96 65 19 53 37
91 32 12 38 23 98 15 55 45 51 46 21 92 47 25 83 44 38 54 23
67 86 21 19 85 38 10 85 47 53 80 53 63 65 42 63 78 50 89 21
50 37 32 66 80 40 97 24 54 28 76 31

我的输出应该显示1000个元素(20列x 50行),因为这将总共1000个元素。但是,我只获得992个元素(最后8个元素丢失)。我将数组大小增加到1008,但这似乎不是解决问题的正确方法。

1 个答案:

答案 0 :(得分:2)

public class Test {

    public static void main(String[] args) {

        int[] values = new int[1000];

        for (int i = 0; i < values.length; i++) {
            values[i] = (10 + (int) (Math.random() * 89));
        }

        for (int i = 0; i < values.length; i++) {
            if (i % 20 == 0) {
                if (i == 0) {
                    printit(i, values);
                } else {
                    System.out.println();
                    printit(i, values);
                }
            } else
                System.out.print(values[i] + "  ");
        }
    }

    public static void printit(int i, int[] values) {
        System.out.print(values[i] + "  ");
    }
}

我明白了!之前,当i%20 == 0时,我没有在索引处打印数字。我只是转到下一个索引。这就是为什么我的输出缺少元素。

输出

94 82 16 11 64 16 34 13 93 47 78 83 11 55 67 10 50 96 62 94
95 83 65 17 67 78 62 29 44 74 57 65 21 20 67 35 24 94 89 94
16 91 42 92 65 26 72 55 33 59 82 40 45 86 89 17 60 78 28 44
86 81 26 92 85 93 13 32 83 51 88 83 26 32 42 17 11 93 61 37
34 79 17 49 54 23 66 38 88 91 55 70 35 98 94 43 22 39 70 57
53 17 42 86 95 11 90 72 15 64 80 92 63 18 85 96 75 46 85 34
56 71 92 38 85 14 58 80 86 71 82 11 22 88 48 66 22 60 59 67
65 18 20 55 29 41 28 58 40 35 28 97 45 48 39 22 29 23 93 28
35 86 74 23 78 34 18 50 85 39 13 61 18 12 18 21 73 11 27 18
45 23 22 45 73 77 10 15 26 71 95 46 17 59 19 55 68 91 60 88
12 32 27 63 20 82 85 51 42 72 42 55 27 30 27 24 61 17 74 80
54 44 33 71 52 10 80 58 76 86 65 64 27 49 38 13 63 90 18 70
48 95 62 62 80 82 66 57 91 56 22 83 16 76 48 85 66 84 71 68
44 14 49 55 47 31 62 62 14 28 45 57 70 37 18 23 82 88 32 62
53 90 46 68 40 60 49 51 43 33 96 52 35 93 54 95 59 40 83 70
98 89 78 80 29 53 85 55 62 86 53 66 40 24 13 33 90 87 33 45
18 49 54 45 73 50 79 46 72 38 59 12 84 43 46 85 55 97 13 19
48 74 80 93 43 90 16 84 49 12 81 59 91 23 57 43 92 27 37 25
12 34 24 58 81 58 72 64 71 84 95 46 31 33 25 70 28 32 46 79
83 16 15 86 21 68 67 95 92 81 84 59 66 85 51 45 32 32 63 65
20 64 12 21 41 69 18 20 34 93 52 89 55 43 55 61 85 92 92 62
42 70 79 24 88 49 50 46 25 19 14 51 24 74 19 60 59 38 56 15
29 63 15 86 29 53 80 79 95 93 47 22 80 94 53 47 84 64 34 61
95 44 84 44 33 93 18 42 53 84 35 58 52 47 52 11 78 32 62 20
34 47 80 72 15 61 72 50 12 86 52 13 47 40 62 26 27 21 72 38
24 45 73 79 23 93 89 34 34 27 81 80 94 71 39 64 16 84 33 22
45 58 56 15 14 70 16 39 68 40 56 66 85 36 45 45 18 23 12 44
54 21 96 89 24 83 13 78 72 97 16 47 62 18 60 52 59 33 76 42
16 14 43 36 18 74 41 81 39 81 93 45 56 11 87 84 14 14 24 24
11 25 40 89 41 56 46 32 63 25 53 57 61 68 84 74 18 87 42 94
61 15 30 45 62 17 54 23 88 47 84 67 77 71 12 62 44 15 79 39
83 91 68 68 45 37 16 75 34 26 55 32 26 31 43 54 38 29 26 53
49 69 10 11 95 36 63 18 29 25 81 79 23 90 46 34 39 88 88 68
17 94 18 82 30 11 42 11 12 59 10 88 77 44 68 31 11 98 94 87
55 79 80 16 29 28 24 12 62 37 12 78 19 17 71 81 82 66 62 10
48 42 48 30 96 51 30 16 80 89 68 78 57 68 31 77 32 60 49 36
83 14 82 96 43 28 53 30 78 63 93 95 53 24 35 19 60 66 38 79
20 48 48 91 85 27 14 34 10 65 86 15 46 87 86 69 95 93 91 85
50 49 27 81 60 16 82 73 75 51 62 31 55 80 87 76 43 43 13 15
14 45 48 17 14 90 26 98 79 48 50 42 87 87 69 16 82 51 25 27
19 51 10 23 17 62 44 39 60 93 73 91 36 14 20 31 55 91 56 24
72 31 76 87 14 13 14 51 84 81 14 16 63 56 30 69 79 80 48 97
92 87 31 63 76 89 58 26 72 81 88 24 87 36 94 60 67 26 59 57
59 78 59 17 70 54 37 19 83 89 10 10 74 18 75 70 57 61 19 29
95 42 44 71 33 34 38 69 79 48 36 66 42 66 48 23 73 24 70 14
47 43 38 85 96 53 72 66 24 65 30 48 64 44 34 33 59 20 12 68
28 91 90 27 56 87 46 66 70 39 32 63 73 41 82 42 74 11 87 28
14 27 88 18 77 83 34 71 23 86 39 69 62 17 47 25 80 12 88 86
15 34 93 92 96 57 42 46 50 32 18 10 33 11 40 34 39 47 23 73
58 69 85 29 27 37 42 83 38 85 82 85 16 43 36 14 16 44 75 67