My scanner is not detecting my first input, but it is detecting the second. More info below.
Here's my code:
static int rows = 5; static int columns = 4; static int elementsEntered = 0;
static boolean leave = false;
static Scanner s = new Scanner(System.in);
static String input;
int[][] iarray = new int[rows][columns];
//Populates int array
System.out.println("In the int array");
for(int r = 0; r<iarray.length; r++) //runs through each row
{
for(int c = 0; r<iarray[0].length; c++) //runs through each column
{
System.out.println("Enter the next Element: (or @ to stop)");
input = s.next();
if(s.hasNext() && input.equals("@")) //sentinel condition
{
leave = true;
break;
} else if (s.hasNextInt()) //populates array with inputs
{
iarray[r][c] = s.nextInt();
elementsEntered++;
s.nextLine();
} else
{
leave = true;
break;
}
}
if(leave)
{
break;
}
}
When I run it nothing happens after the first time I type something and press enter. Likewise, nothing happens if I press enter multiple times. But the second time I enter a value and press enter, then it gets entered into the array. Also, my sentinel condition faces the same issue.
So why is my scanner not detecting the first value I enter? I assume its something with the scanner functions I'm using but I can't figure out why.
Thanks
Edit: I found a solution. I removed the s.hasNext() and s.hasNextInt conditions and I changed
input = s.next();
to
input = s.nextLine();
and got the int value by parsing it from input.