用整数序列和打印填充数组的方法

时间:2016-10-07 00:30:50

标签: java arrays

我有关于如何编写一个用整数填充数组的方法的问题。我做了这个方法,但我对如何打印感到困惑。我应该从每个方法中的for循环开始吗?我应该如何在一行上打印它们,每个数字之间有一个空格,如下所示:[1 2 3 4 5 6 7 ... 50]?

public class Numbers {
    public int[] numbers;

    public Numbers() {
        numbers = new int[50];
    }

    public void numSequence() { // filling the array with sequence of integers.
        for(int i = 0; i < 50; i++) {
            numbers[i] = i;
        }   
    }

    public void printArray() { // printing the array 
        // do I need for loop here 
        for(int i = 0; i < 50; i++) {
            System.out.print(i+1);
        }
    }

    public static void main(String[] args){
        Numbers d = new Numbers();

        d.numSequence();
        d.printArray();
    }
}

3 个答案:

答案 0 :(得分:1)

您的printArray方法未打印阵列。它打印for循环的索引。首先,打印实际的数组值。

同样使用该打印件,您可以在每个字母后添加自己的空格。

E.g。

public void printArray() { // printing the array
    System.out.print("["); // not in loop
    for(int i = 0; i < numbers.length; i++) { // loop through numbers array
        System.out.print(numbers[i]); // print the element in the array
        if (i != numbers.length - 1) { // not the last element, so print a space
            System.out.print(" ");
        }
    }
    System.out.print("]"); // not in loop
}

但是你会遇到一个问题。因为在您创建numbers数组时,您的开始时间为0,而不是1。现在,您可以像在问题中一样将1添加到numbers数组中来解决此问题。但这是不好的做法,因为你可能首先正确地创建了你的阵列。因此,将numSequence方法更改为:

public void numSequence() { // filling the array with sequence of integers.
    for(int i = 1; i <= 50; i++) { // starts at 1, and <= 50 so it adds 50 too
        numbers[i] = i;
    }   
}

答案 1 :(得分:0)

没有必要创建一个类来做这种事情。 Java 8中的示例代码类似于:

Stream<Integer> stream = Stream.iterate(1, t-> t + 1);
System.out.println(Arrays.toString(stream.limit(50).toArray()));

如果你坚持使用printArray方法,请看一下Arrays#toString的实现。基本上你必须使用StringBuilder来连接数组项。

答案 2 :(得分:0)

我不会详细说明,我只是修改你的代码,

public class Numbers {
public int[] numbers;

public Numbers() {
    numbers = new int[50];
}

public void numSequence() { // filling the array with sequence of integers.
    for(int i = 0; i < 50; i++) {
        //Add i+1 here o when we print we get 1 2 3 ....50
        numbers[i] = i+1;
    }   
}

public void printArray() { // printing the array 
    // Use numbers.length instead of 50.
    for(int i = 0; i < numbers.length; i++) {
        //Print the values inside the array numbers
        System.out.print(numbers[i]+" ");
    }
}

public static void main(String[] args){
    Numbers d = new Numbers();

    d.numSequence();
    d.printArray();
}

}

提示:您可以使用此方法代替您的方法使程序更具可伸缩性,并将其作为d.numSequence(100)访问,这将打印1 2 3 ... 100

    public void numSequence(int theNumberLimit) {
    for(int i = 0; i < theNumberLimit; i++) {
        numbers[i] = i+1;
    }   
}

谢谢你希望这有帮助