0

How can I occupy the [0][0] space with information from the user. When it prints, it begins at [0][1] instead of [0][0]

Scanner scan = new Scanner(System.in);
int sizeArray;

//Prompting user for number of users to be added
System.out.println("How many users are you going to add?");
sizeArray = scan.nextInt(); //Reading users to add

String user [][] = new String[sizeArray][2];


System.out.println("Enter name followed by unique password: ");

for(int i = 0; i < sizeArray; i++) {
    for (int j = 0; j< 2; j++) {
        user[i][j] =scan.nextLine();
    }
}
System.out.println("You entered: ");

for(int i = 0; i < sizeArray; i++) {
    for(int j = 0; j < 2; j++) {
        System.out.println(" Name["+i+"]["+j+"] = "+user[i][j]);
    }
    System.out.print("");
}
Renats Stozkovs
  • 2,393
  • 10
  • 20
  • 24
cbc
  • 1
  • 1
  • what is the question, do you wanna your method to print from index [0][1]? – Yahya Apr 29 '17 at 17:55
  • 1
    Possible duplicate of [Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods](http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo) – OneCricketeer Apr 29 '17 at 18:17
  • `sizeArray = Integer.parseInt( scan.nextLine());` – OneCricketeer Apr 29 '17 at 18:19

2 Answers2

1

When it prints, it begins at [0][1] instead of [0][0]

you're invoking the scan.nextInt() method before scan.nextLine() which does not consume the last newline character of the user input hence the first scan.nextLine() within the loop consumes that newline character and when you attempt to retrieve the element at [0][0] within the user two-dimensional array, it will print an empty string.

a quick solution that will enable you to print the expect values starting at [0][0] is right after this:

System.out.println("Enter name followed by unique password: ");

insert this:

scan.nextLine();

now it becomes:

System.out.println("Enter name followed by unique password: ");
scan.nextLine(); // let this consume the newline character
Ousmane D.
  • 50,173
  • 8
  • 66
  • 103
0
 public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int sizeArray;

        System.out.println("How many users are you going to add?");
        sizeArray = Integer.parseInt(scan.nextLine());

        String user[][] = new String[sizeArray][2];


        System.out.println("Enter name followed by unique password: ");

        for (int i = 0; i < sizeArray; i++) {
            String[] input = scan.nextLine().split(" ");
            for (int j = 0; j < 2; j++) {
                user[i][j] = input[j];
            }
        }
        System.out.println("You entered: ");
        for (int i = 0; i < sizeArray; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.println("Name[" + i + "][" + j + "] = " + user[i][j]);
            }
            System.out.print("");
        }
    }

I suppose this is the answer for your problem? :)