使用多个Scanner对象从标准输入输入不同数据类型的优点是什么,只需使用一个Scanner对象即可完成。
例如:
public class Etc
{
public static void main(String[] args)
{
String name;
int y;
Scanner inputString= new Scanner(System.in);
Scanner inputint=new Scanner(System.in);
name=inputString.nextLine();
y=inputint.nextInt();
}
}
import java.util.Scanner;
public class Etc
{
public static void main(String[] args)
{
String name;
int y;
Scanner input= new Scanner(System.in);
name=input.nextLine();
y=input.nextInt();
}
}
答案 0 :(得分:0)
我会看到使用不同扫描程序对象的唯一优势是使用多个输入流时。
例如:
Scanner keyboard = new Scanner(System.in);
Scanner fileScan = new Scanner(myFile);
仅使用一个流时,请坚持使用Scanner
个对象。
我个人认为最好的办法是将它定义为你班级的私人静态最终变量,并从头开始实现它。
以下是一个例子:
public class MyClass{
private static final Scanner keyboard = new Scanner(System.in);
public static void main (String[] args){ //blabla }
// Random stuff
}
答案 1 :(得分:0)
如果你有类似的话:
y=input.nextInt();
name=input.nextLine();
然后Scanner#nextInt
方法不会使用输入的 last newline 字符,因此在下一次调用{{3}时会消耗换行符 }}
这会使你的名字变成空白。
在你的例子中,你有nextLine,然后是nextInt,这就是你没有看到问题的原因。如果您反转它,您将看到问题。
我不确定这是否只是这样做的原因,但这可能是使用2个不同流的原因之一。
注意:在Scanner#nextLine
或任何Scanner#nextLine
方法(Scanner#nextFoo
本身除外)之后使用nextLine
时,您会遇到类似的行为。