java - Parse Int/Parse long NumberFormatException 问题

标签 java string long-integer

我正在尝试将字符串转换为 Long/Int 并不断收到 NumberFormatException。该字符串是一个我不明白的数字。我尝试解析为 double 并得到无穷大。 我做错了什么?

public class EncryptDecrypt {
private char[] localKey;
private long keyNumber;
public EncryptDecrypt(char[] localKey) {
    this.localKey = localKey; // Brings in 256 random characters
    keyNumber = makeKeyNumber(localKey); 
    System.out.println(keyNumber); //prints long

}
private long makeKeyNumber(char[] key) {
    StringBuilder keyString = new StringBuilder();
    for(int i = 0; i<key.length; i++) {   //Builds String from chatacter array
        int ascii = (int) key[i];
        keyString.append(ascii);
    }
    String s = keyString.toString(); // Makes a string from stringbuilder
    long keyNum = Long.parseLong(s); // Attempts to convert string to long

    return keyNum; //returns long
}

}

错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "1121214840113493593108124959933124991191111155510211549117935560351251051181216112311811354631064111712563371141044610510739101436457101108361109395411095555121465711133107466391125103119411219910436575950469549424363114114614597491064011312110398491254136371199942110115985141102122464410410060611086111311011210811242123981091054612045104911091191231131164345115124991245638913543123394658985539123112117113421225444351169157529911549435933949598434157591021241194249113425311535454957111108107611074064113944040601001145036333610510548933848994911550118593511910712163581141209743101643361100113999954931191246395107"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Long.parseLong(Long.java:699)
at java.base/java.lang.Long.parseLong(Long.java:824)
at EncryptDecrypt.makeKeyNumber(EncryptDecrypt.java:18)
at EncryptDecrypt.<init>(EncryptDecrypt.java:7)
at Main.main(Main.java:15)

最佳答案

11212148401134935931081249599331249911911111555102115491179355603512510511812161123118113546310641117125633711410446 105107391014364571011083611093954110955551214657111331074663911251031194112199104365759504695494243631141146145974910640113 121103984912541363711999421101159851411021224644104100606110861113110112108112421239810910546120451049110911912311311643451 151249912456389135431233946589855391231121171134212254443511691575299115494359339495984341575910212411942491134253115354549 571111081076110740641139440406010011450363336105105489338489949115501185935119107121635811412097431016433611001139999549311 91246395107

太大,无法容纳任何整数数据类型。因此,对于这种情况,我推荐 BigInteger

关于java - Parse Int/Parse long NumberFormatException 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810845/

相关文章:

java - 将 J2EE 网站中发生的错误(异常)映射到合适的错误消息的有效方法是什么?

python - 如何删除字符串中除所选值之外的所有值

c# - Java 是否有 '@' 字符来转义字符串引号?

java - Long.parseLong(String s) 和 new Long(String s) 的区别?

R根据行中的值在列中重复

java - 如何将 Dropbox API 的 OAuth1 token / secret 对迁移到 OAuth2 访问 token ?

java - .properties 文件中的条件语句

java - 在不使用 findFiles() 的情况下获取作为文档树子项的 DocumentFile

perl - 在 Perl 中,如何导入示例 CSV,进行基本的文本操作,然后将其保存回 CSV?

Django rq 做批量数据库插入