有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么这种转换会产生错误?

我在eclipse中有以下代码:

        String A = String.valueOf(a);
        String B = String.valueOf(b);
        String C = String.valueOf(c);
        String D = String.valueOf(d);
        String E = String.valueOf(e);
        String F = String.valueOf(f);
        String G = String.valueOf(g);
        String H = String.valueOf(h);
        String I = String.valueOf(i);
        String J = String.valueOf(j);
        String K = String.valueOf(k);

        String rawpassword = A+B+C+D+E+F+G+H+I+J+K;
        int password = Integer.parseInt(rawpassword);
        System.out.println(password);

它给了我这个错误

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:495)
    at java.lang.Integer.parseInt(Integer.java:527)
    at com.jakibah.codegenerator.Main.Generate(Main.java:65)
    at com.jakibah.codegenerator.Main.run(Main.java:24)
    at java.lang.Thread.run(Thread.java:745)

但我不明白为什么。 有人能帮我吗


共 (3) 个答案

  1. # 1 楼答案

        String A = String.valueOf(10);
        String B = String.valueOf(10);
        String C = String.valueOf(10);
        String D = String.valueOf(10);
        String E = String.valueOf(10);
        String F = String.valueOf(10);
        String G = String.valueOf(10);
        String H = String.valueOf(10);
        String I = String.valueOf(10);
        String J = String.valueOf(10);
        String K = String.valueOf(10);
    
    
        String codestring = A+B+C+D+E+F+G+H+I+J+K;
        BigInteger bigInteger = new BigInteger(codestring);
        System.out.println(bigInteger.max(bigInteger));
    
  2. # 2 楼答案

    如果参数不是可解析的Integer,则parseInt(String s)方法抛出一个NumberFormatException

    确保传递给方法的String是一个Number并且在-2^312^31 - 1之间

  3. # 3 楼答案

    当您试图将字符串类型转换为整数但不适合作为整数时,会出现数字格式异常。 从你的代码中,我无法理解a、b、c、d的值是多少,。。 根据我的经验,我上传了两张图片来告诉你可能是你犯了这样的错误

    enter image description here

    这里出现数字格式异常,因为codestring为10.320,并且是字符串类型,所以当编译器尝试将其转换为字符串时,由于以下原因,无法将其转换为字符串

    enter image description here

    但在这个场景中,codestring是1020,所以很容易将其转换为int