Hardik Vats
Hardik Vats

Reputation: 57

Taking Space Separated Row Inputs in a Two dimensional Array

Im relatively new to programming and i was working with a problem that requires me to read space separated integers and input them into a two dimensional array but i dont seem to understand why I am not able to do so . any hint on possible approaches will be helpful

Eg. Input will look like this

2 //FOR DIMENSION

2 3 //ROW1

4 5 // ROW 2

import java.io.*;
import java.util.*;
import java.lang.*;
public class HelloWorld{

 public static void main(String []args){
    Scanner sc= new Scanner(System.in);
    System.out.println("Hello World");
    System.out.println("Enter Dimension of Matrix");
    int N= sc.nextInt();
    int[][] m=new int [N][N];
    for (int i=0;i<N;i++)
    {   System.out.println("Enter Elements of row "+ i);
       for(int j=0;j<N;j++ )
       {
        m[i]=sc.nextInt();
       }
    }
    System.out.println(m);
 }
}

I tested the above code and got the following result on the console

HelloWorld.java:16: error: incompatible types: int cannot be converted to int[]
m[i]=sc.nextInt();

^

First of all, I would like to know is my thinking(approach) right?

Second, what are the possible ways to do this correctly?

Upvotes: 0

Views: 2337

Answers (2)

Imran
Imran

Reputation: 425

here you go:

import java.io.*;
import java.util.*;
import java.lang.*;

public class HelloWorld {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter Dimension of Matrix");

        int N = sc.nextInt();
        int[][] m = new int[N][N];
        for (int i = 0; i < N; i++) {
            System.out.println("Enter Elements of row " + i);
            for (int j = 0; j < N; j++) {
                m[i][j] = Integer.valueOf(sc.next());//replaced line with proper code
            }
        }
        sc.close();
        System.out.println(Arrays.deepToString(m));//use this api to print arrays
    }
}

Upvotes: 1

Aaron
Aaron

Reputation: 175

m is a multidimensional array meaning you must specify m[i][?]. Like so

m[i][j]=sc.nextInt();

Your logic is a little off, you want to ask the user for input at row start i, and for the other columns j. Try this and happy coding :)

for (int i=0;i<N;i++){                  
    for(int j=0;j<N;j++){
        System.out.println("Enter Elements of row "+ i);
        m[i][j]=sc.nextInt();
    }
}

for (int i=0;i<N;i++){     
    for(int j=0;j<N;j++){
        System.out.print(m[i][j]);
    }
    System.out.println();
}

Upvotes: 0

Related Questions