【问题标题】:Why does this conversion give an error?为什么这种转换会出错?
【发布时间】:2016-08-18 10:25:57
【问题描述】:

我在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)

但我不明白为什么。 有人可以帮我吗?

【问题讨论】:

  • 向我们展示 a,b,c...k 和 rawPassword
  • a = r.nextInt(10); b = r.nextInt(10); c = r.nextInt(10); d = r.nextInt(10); e = r.nextInt(10); f = r.nextInt(10); g = r.nextInt(10); h = r.nextInt(10); i = r.nextInt(10); j = r.nextInt(10); k = r.nextInt(10); rawpassword 是代码字符串,对不起,这是我班级的旧版本。
  • 您的rawpasswordString 显然不包含有效数字。
  • 请使用循环,这样可以节省代码行数并提高清晰度和可读性

标签: java string parsing exception int


【解决方案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】:

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

    确保您传递给方法的String 是Number 并且介于-2^31 和2^31 - 1 之间

    【讨论】:

      【解决方案3】:

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

      这里出现数字格式异常,因为 codestring 是 10.320,它是一个字符串类型,所以当编译器尝试将其转换为字符串时,由于 .

      而无法转换它

      但在这种情况下 codestring 是 1020 ,因此很容易转换为 int。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-11
        • 2011-03-31
        • 2020-11-26
        • 1970-01-01
        相关资源
        最近更新 更多