我觉得我必须遗漏一些简单的东西,但我得到的NumberFormatException是以下代码:
System.out.println(Integer.parseInt("howareyou",35))
Run Code Online (Sandbox Code Playgroud)
它可以yellow从基数35 转换字符串,我不明白为什么我会得到NumberFormatException这个字符串.
Ren*_*ink 31
因为结果将大于Integer.MAX_VALUE
试试这个
System.out.println(Integer.parseInt("yellow", 35));
System.out.println(Long.parseLong("howareyou", 35));
Run Code Online (Sandbox Code Playgroud)
并为
Long.parseLong("abcdefghijklmno",25)
Run Code Online (Sandbox Code Playgroud)
你需要BigInteger
试试这个,你会明白为什么
System.out.println(Long.MAX_VALUE);
System.out.println(new BigInteger("abcdefghijklmno",25));
Run Code Online (Sandbox Code Playgroud)
来自JavaDocs:
NumberFormatException如果发生以下任何一种情况,则抛出类型异常:
- 第一个参数是
null或是一个长度为零的字符串.FALSE:"howareyou"不是null超过0长度- 基数小于
Character.MIN_RADIX或大于Character.MAX_RADIX.错误:35在范围内[2,36]- 字符串的任何字符都不是指定基数的数字,除了第一个字符可以是减号' - '('\ u002D')或加号'+'('\ u002B'),前提是字符串是长度超过1. FALSE:"howareyou"的所有字符都在基数范围[0,'y']
- ==>字符串表示的值不是type的值
int.TRUE:异常的原因.这个值太大了int.
无论是Long或BigInteger应当使用
该数字比Integer.MAX_VALUE更大
试试这个:
System.out.println(Integer.parseInt("yellow", 35));
System.out.println(Long.parseLong("howareyou", 35));
Run Code Online (Sandbox Code Playgroud)
如RenéLink评论所示,您正在寻找使用BigInteger的类似内容:
BigInteger big=new BigInteger("abcdefghijklmno", 25);
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
System.out.println(Long.MAX_VALUE);
System.out.println(new BigInteger("abcdefghijklmno",25));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36647 次 |
| 最近记录: |