user3633880
user3633880

Reputation: 25

Java Matrix using Arrays

I'm struggling to find an answer to the problem below. User inputs rows and columns. Example below is given for 4 x 4 matrix.

1 8 9 16

2 7 10 15

3 6 11 14

4 5 12 13

I cannot find how to relate the numbers when printing the array. The only obvious relation is how it goes downwards and upwards. From my perspective looks really hard. I'm just a beginner.

Not quite sure if there is any point to post the code, but it's just the basic lines:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Please enter your array rows: ");
    int rows = scanner.nextInt();

    System.out.println("Please enter your array columns: ");
    int columns = scanner.nextInt();

    int[][] array = new int[rows][columns];

    int counter = 0;
    for (int j = 0; j < columns; j++){
        for (int i = 0; i < rows; i++) {
            counter++;
            array[i][j]=...(stuck at the beginning);
        }

Probably I'd need to use several loops , not only the above-mentioned or probably it is totally wrong ... Thank you in advance!

Upvotes: 0

Views: 123

Answers (2)

Manish
Manish

Reputation: 59

It serves the purpose

import java.util.*;

public class Seq

{

public static void main(String[] args)

{

Scanner scanner = new Scanner(System.in);

System.out.println("Please enter your array rows: ");

int rows = scanner.nextInt();

System.out.println("Please enter your array columns: ");

int columns = scanner.nextInt();

 int[][] array = new int[rows][columns];

  int counter = 0;

for (int j = 0; j < columns; j++){

if(j%2==0) {

 for (int i = 0; i < rows; i++)
     {
        counter=counter+1;
            array[i][j]=counter;

        }
 } 
else

 {
      for (int i = rows-1; i >=0; i--) 

          {
                counter=counter+1;

                array[i][j]=counter;

            }
     }

  }

  for(int i=0;i<rows;i++)

    {

        for(int j=0;j<columns;j++)
      {

        System.out.print(array[i][j]+" ");

        }
        System.out.println();
         }
   }

}

Upvotes: 0

Sumeet
Sumeet

Reputation: 8292

I think this should do it.

    int counter = 0;
    boolean top_to_bottom=true;
    for (int j = 0; j < columns; j++){
        for (int i = 0; i < rows; i++) {
            counter++;
            if(top_to_bottom)
             array[i][j]=counter;
            else
             array[rows-1-i][j]=counter;
        }
        if(top_to_bottom)
         top_to_bottom=false;
        else top_to_bottom=true;
    }

Upvotes: 1

Related Questions