解析整数错误

时间:2013-04-19 20:14:13

标签: java string parseint

由于某种原因,我无法获得字符串数值以转换为整数,我得到的错误是 运行:

Exception in thread "main" java.lang.NumberFormatException: For input string: "6327818260"
    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 MyDirectory.getsize(MyDirectory.java:18)
    at a19010.main(a19010.java:79)

Java结果:1

如果我的输入字符串是“6327818260”,为什么它不能成为整数?我的代码是

public String getsize()
{
  int intSize = Integer.parseInt(mySize);
  int count = 0;
  String dataType = "";
  while (intSize > 1000)
  {   
   intSize = intSize / 1000;
   count++;
  } 
  switch (count)
  {
    case 0:
    dataType = "Bytes";
    break;
    case 1:
    dataType = "KB";
    break;
    case 2:
    dataType = "MB";
    break;
    case 3:
    dataType = "GB";
    break;
    case 4:
    dataType = "KB";
    break;    
  }   
    return intSize + dataType ;
} 

mySize取自此处从文本文件中获取的字符串的一部分

 public class MyDirectory 
{
  String myName = "" ;
  String myNum = "";
  String mySize = "";
    public MyDirectory(String line)

  {
    line = line.trim();  
    String[] lineParts = line.split(" ");
     mySize = lineParts[0];
     myNum = lineParts[1];
     myName = lineParts[3];
  }

线路分裂看起来像    6327818260 6486 SUB-TOTAL:E:\ WIS26 \ LCORRES

3 个答案:

答案 0 :(得分:6)

最大可能的整数是 2147483647 这比你试图解析的价值低很多: 6327818260

您需要使用long或BigInteger / BigDecimal来保存该值。

对于BigInteger / BigDecimal表示基数10整数的字符串可以由带有字符串参数的构造函数解析。

BigDecimal bigDecimal = new BigDecimal("6327818260");

答案 1 :(得分:2)

6327818260 is greater than the Integer.MAX_VALUE `2147483647`

您可以尝试将字符串解析为Long

答案 2 :(得分:0)

如果它是一个32位整数,你想把它打包进去,它太大了。