Scanner input = new Scanner(System.in);
Could you give me a detailed explanation on what the code above is doing step by step? I don't really understand how it works and how it links to me later being able to do this statement:
int i = input.nextInt()
Alright, let's elaborate with some simplified explanation about the Scanner
class.
It is a standard Oracle class which you can use by calling the import java.util.Scanner
.
So let's make a basic example of the class:
class Scanner {
InputStream source;
Scanner(InputStream src) {
this.source = src;
}
int nextInt() {
int nextInteger;
//Scans the next token of the input as an int from the source.
return nextInteger;
}
}
Now when you call Scanner input = new Scanner(System.in);
you make a new object of the Scanner
class (so you make a new "Scanner") and you store it in the variable input
. At the same time you are calling the (so called) constructor of the class, with the parameter System.in
. That means it is going to read from the standard input stream of the program.
Now when you are calling input.nextInt();
you execute the method from the object you just created (also documented). But as we see, this method returns a integer, so if we want to use that integer, we have to assign the call to a variable like you do:
int i = input.nextInt();