在Java中,为什么Scanner的input.nextInt(3)会以这种方式运行?

时间:2016-09-16 18:14:55

标签: java java.util.scanner

参见代码:

Scanner input = new Scanner(System.in);
System.out.println(input.nextInt(3));
//if user inputs 21, then the output is 7

我唯一的理解是,done.nextInt(3)将其变为基数3,因此只接受10,11,12或20,21,22之类的输入。

但有人可以帮助我理解为什么nextInt(#)表现得这样,为什么输入21个输出7?

由于

3 个答案:

答案 0 :(得分:0)

您正在使用的nextInt方法接受您想要读入的整数基数的参数。参数3将以整数读取为基数3.

请参阅扫描仪课程文档:https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt(int)

答案 1 :(得分:0)

当您向int提供nextInt()参数时,该参数为the radix of the input that's being parsed。在这种情况下,这意味着输入在Base-3中解析。 Base-3中的21是Base-10中的7:

00 - 0
01 - 1
02 - 2
10 - 3
11 - 4
12 - 5
20 - 6
21 - 7 // here
22 - 8
// etc.

答案 2 :(得分:0)

基本上input.nextInt(x)表示您想要表示用户在base x

中输入的值

输出为7,因为21在基数3中表示为7。 您始终可以使用online calculator来体验如何在不同的基础中表示相同的数字。