Reputation: 29
I tried getting String input from the user. But it fails with to receive input at arr[0][0].
About Program: In dynamic 2d array program search a string in that array matrix and return true or false.
class SearchString{
public static void main(String[] args){
int n, m;
System.out.println("Enter the size of 2d array: ");
Scanner s = new Scanner(System.in);
n = s.nextInt();
m = s.nextInt();
String[][] arr = new String[n][m];
System.out.println("Enter the elements: ");
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.println("arr["+i+"] ["+j+"]"); arr[i][j] = s.nextLine();
}
}
}
}
Enter the size of 2d array:
2
2
Enter the elements:
arr[0] [0]
arr[0] [1]
AMerica
arr[1] [0]
Uk
arr[1] [1]
France
Upvotes: 0
Views: 45
Reputation: 1627
Assuming you use the [enter] key to submit your values, you should add a s.skip("\n");
after getting the array size, so that the first position of your 2d array is not ignored:
public static void main(String[] args) {
int n, m, flag = 0;
System.out.println("Enter the size of 2d array: ");
Scanner s = new Scanner(System.in);
n = s.nextInt();
m = s.nextInt();
s.skip("\n");
String[][] arr = new String[n][m];
System.out.println("Enter the elements: ");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println("arr[" + i + "] [" + j + "]");
arr[i][j] = s.nextLine();
}
}
System.out.println("Done! Content of your 2d array:");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println("arr[" + i + "] [" + j + "] = " + arr[i][j]);
}
}
}
Upvotes: 0
Reputation: 550
do a
s.nextLine();
After reading the int values (m and n). To clear the eol caracter before using s.nextline to read the input
public static void main(String[] args){
int n, m;
System.out.println("Enter the size of 2d array: ");
Scanner s = new Scanner(System.in);
n = s.nextInt();
m = s.nextInt();
s.nextLine();
String[][] arr = new String[n][m];
System.out.println("Enter the elements: ");
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.println("arr["+i+"] ["+j+"]"); arr[i][j] = s.nextLine();
}
}
}
Upvotes: 5