-3

最奇怪的事情。我有这条线

int i = Integer.parseInt("3",3);

但是每次我运行它时,我都会得到一个 NumberFormatException.forInputString。为什么?这是一个简单的基础转换。中断转换的 int 3 有什么特别之处?

4

6 回答 6

6
  1. parseInt()需要一个字符串作为第一个参数。

  2. 在基数 3 中没有数字“3”。只是“0”到“2”。十进制“3”由以 3 为底的“10”表示。

于 2013-05-14T13:29:15.823 回答
2

Integer.parseInt()期望解析一个字符串,而不是一个整数。你要

int i = Integer.parseInt("3", 3);

您还会遇到 3 不是以三为底的数字的问题。根据文档,这仍然会引发 NumberFormatException。

字符串的任何字符都不是指定基数的数字

于 2013-05-14T13:28:31.080 回答
0

3必须是数字String才能解析为int而不是int文字:

int i = Integer.parseInt("2", 3);

此外,base-3 数字不能包含3数字,因为只有0,12可用。因此我2在上面的示例代码中使用了。

于 2013-05-14T13:28:21.810 回答
0

3 在基数 3 中根本不作为数字存在... 0, 1, 2, 10, 11, 12, 20, 21, 22, 100

于 2013-05-14T13:28:49.263 回答
0

如果要将 base-10 解析为 base-n String,可以使用以下内容:

System.out.println(Integer.toString(3, 2)); // print 11 -> String data type

上面的代码是以 10 (integer) 为基数解析3为二进制 (base-2) String

以下代码应将 base-2 解析String为 base-10 整数值:

System.out.println(Integer.parseInt("11", 2)); // print 3 -> base-10 integer

上面的代码是将二进制解析11为以 10 为底的整数。您的代码使用此字符串格式有错误,对于 base-3,字符串仅包含0, 1, 2.

请注意如何使用这两种方法的区别。

于 2013-05-14T13:38:21.820 回答
0
  • Integer.parseInt将 String 作为有符号十进制整数,并且该整数必须小于且不等于基数值(基数)。

    Integer.parseInt("X",x); //X mustn't contain x.
    
于 2013-05-14T13:42:00.523 回答