简体   繁体   中英

How can I print an increasing number of elements of an array per line

I want to print out an increasing number of elements in my array per line but I'm not sure how I could do it.

 public static void main(String[] args) {
         int[] x = new int[21];
         for (int i = 0; i < x.length; i++) {
             x[i] = i + 1;
         }
         System.out.println(Arrays.toString(x));
 }

I would like my output to look like:

[1]

[2, 3]

 [4, 5, 6]

 etc...

instead of what I get right now which is

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

I'm really new to java so any tips would really be appreciated, thanks.

Add this below your code.

for (int i = 0, ctr = 0; i < x.length; ctr++) {
    System.out.print("[ ");
    for (int j = 0; j <= ctr; i++) {
        System.out.print(x[i]);
        j++;
        if (j <= ctr) {
            System.out.print(" ,");
        }
    }
    System.out.println(" ]");
}

Using two loops you can achieve the result, the outer loop will create an empty array with each iteration and the inner one will populate it with numbers. Also using a third variable to keep track of the last number generated.

public static void main(String[] args) {
       int n = 21;
       int lastNumber = 0;
       int x[] = null;
       for(int j = 0; j< n; j++) {
            x = new int[j];
            for (int i = 0, k = lastNumber; i< j; i++,k++) {
                x[i] = k + 1;
            }
            if(x.length != 0){
                lastNumber = x[x.length - 1];
                System.out.println(Arrays.toString(x));
            }
      }
 }

Output:

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

This method does not require storage

int start = 1;
int count = 1;
int outer = 6;
for (int y = 0; y < outer; y++) {
   System.out.print ("[");
   int x = start;
   for (; x < start + count; x++) {  
       System.out.print (x);
       if (x < start + count - 1) 
           System.out.print(","); 
   }
   System.out.println ("]");
   count++;
   start = x;
}

result

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

You can use this code

        int[] x = new int[21];
        for (int i = 0; i < x.length; i++) {
            x[i] = i + 1;
        }
        int start = 0, len = 1;
        while(start + len <= x.length) {
            int[] newArray = Arrays.copyOfRange(x, start, start + len);
            System.out.println(Arrays.toString(newArray));
            start += len;
            len++;
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM