[英]distinguish the working of Scanner, System.in, and next() methods that the Scanner class provides in java?
Scanner scanner = new Scanner(System.in);
System.out.println("enter number :");
int number = scanner.nextInt();
System.out.println("Number is " + number);
让我通过 go 一步一步来解释我的理解,
Scanner scanner = new Scanner(System.in);
扫描仪是 java 内置类之一,它是我们可以使用它来读取用户输入的方式之一。
scanner 是我们创建的 object 的标识符。
使用new
,我们创建了 object 的实例。
System.in
帮助我们从控制台(键盘)获取输入
System.out.println("输入号码:");
打印“输入号码:”。
int number =scanner.nextInt();
从控制台(键盘)读取给定给 system.in 的输入,并将输入解析(转换)为 int 并将其存储在变量 number 中。
System.out.println("数字为" + number);
打印语句“数字是”+数字(存储在变量数字中的输入));
我认为这是我的模糊理解,我不确定我的知识。
我的问题是;
扫描仪 class 用于读取用户输入,那么 System.in 也用于读取输入? 不是吗? 这将有助于解释这两个术语之间的明确区别吗?
当我们从控制台输入(输入)输入时,它会去哪里? 到 System.in?
System.in 是否存储值?
扫描仪读取,System.in 读取,nextInt() 读取,一切都读取? 我无法区分这些的工作原理?
System.in
是从 读取的,它不会自己读取。
Scanner
class 有助于解析从您提供的输入源获得的输入。 在这种情况下,您已经给了它System.in
,所以它从那里读取输入。
nextInt()
是Scanner
提供的帮助您解析输入的方法之一。 具体来说,它解析 integer。
System.in
是一个InputStream
,它(默认情况下)从控制台提供用户输入。 您可以使用read
直接读取它:
int someByte = System.in.read();
请注意,这会读取一个无符号字节(Java 没有无符号字节的类型,因此类型是int
)。 例如,如果我在控制台中输入1
,上面将存储 49 到someByte
,因为 49 是字符1
被编码为的第一个字节。
如果您想将someByte
改为 1,那么使用System.in.read
显然不是很有帮助,是吗? 我们不想只读取字节。 我们想要读取字节,并使用特定的编码将这些字节转换为字符,然后将字符串解析为数字。 这就是Scanner
所做的。
Scanner
可以获取输入 stream 并按需从中读取字节,使用默认编码将它们理解为字符,然后将字符块组合成令牌。 Scanner
读取内容的一种方法是调用nextInt
。 nextInt
所做的是:读取字节直到找到完整的令牌,并将其解析为 integer。
简而言之, System.in
为您提供原始字节, Scanner
为您提供标记,解析或其他方式。 希望这能回答您的第一个和第三个问题。
当我们从控制台输入(输入)输入时,它会去哪里? 到 System.in?
是的,在这个抽象层次上,你可以说它是 go 的第一个位置。 然后将您输入的字节传递给Scanner
,然后将它们转换为令牌,然后进行解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.