参见代码:
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?
由于
答案 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来体验如何在不同的基础中表示相同的数字。