...
Creating
...
multiple
...
scanners
...
on
...
System.in
...
upsets
...
the
...
predictability
...
of
...
program
...
behavior,
...
especially
...
when
...
System.in
...
has
...
been
...
re-directed.
...
Noncompliant
...
Code
...
Example
...
import
...
java.util.Scanner;
...
public
...
class
...
InputLibrary
...
{
public static int getInt()
...
{
...
System.out.println("Please
...
enter
...
an
...
int:");
...
Scanner
...
in
...
=
...
new
...
Scanner(System.in);
...
return
...
in.nextInt();
...
}
public static int getDouble()
...
{ System.out.println("Please
...
enter
...
a
...
double:");
...
Scanner in = new Scanner(System.in);
...
return in.nextDouble();
...
}
}
Compliant Code Example
import java.util.Scanner;
...
public
...
class
...
InputLibrary{
...
private static Scanner in = new Scanner(System.in);
...
public static int getInt(){
...
    Â
...
System.out.println("Please
...
enter
...
an
...
int:");
...
    Â
...
return
...
in.nextInt();
...
 Â
...
}
public static int getDouble(){
...
    Â
...
System.out.println("Please
...
enter
...
a
...
double:");
...
    Â
...
return
...
in.nextDouble();
...
 Â
...
}
...
}