【问题标题】:Parse Integer error解析整数错误
【发布时间】:2013-04-19 20:14:13
【问题描述】:

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

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 小计:E:\WIS26\LCORRES

【问题讨论】:

  • 整数的最大值是多少?

标签: java string parseint


【解决方案1】:

最大可能的整数是 2147483647 这比您尝试解析的值要小很多: 6327818260

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

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

BigDecimal bigDecimal = new BigDecimal("6327818260");

【讨论】:

  • 有没有办法把一个字符串变成一个大小数?我无法从 mySize 字符串初始化大小数
  • 接受字符串的构造函数理解十进制整数。
  • 这就是我认为我做错了什么我的构造函数看起来像 BigDecimal size = BigDecimal(mySize);
  • 修复了它。我想我忘了是什么原因
【解决方案2】:
6327818260 is greater than the Integer.MAX_VALUE `2147483647`

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

【讨论】:

  • 这可以让我的代码编译,但它对除法不起作用,因为它摆脱了小数
  • 如果是十进制,试试 BigDecimal。你可以BigDecimal dc = new BigDecimal(str);
【解决方案3】:

如果您希望将其打包成一个 32 位整数,则它太大了。

【讨论】:

    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 2013-03-26
    • 2016-04-24
    • 2013-04-23
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多