从字符串到整数的转换中的Java数字格式异常

时间:2018-04-27 18:48:53

标签: java string int number-formatting numberformatexception

以下程序使用日期和时间生成唯一键(使用joda time API)

import org.apache.commons.codec.binary.Base64;
import org.joda.time.*;

public class EnDecoding {


    public String EncodeRecieverAddress(String emailaddress){
        byte[] encodedBytes = Base64.encodeBase64(emailaddress.getBytes());
        return new String(encodedBytes);
    }

    public String DecodeRecieverAddress(String encodedemail){
        byte[] decodedBytes = Base64.decodeBase64(encodedemail.getBytes());
        return new String(decodedBytes);
    }

    public int GenerateUniquekey() {
        LocalTime localtime = new LocalTime();
        LocalDate localdate = new LocalDate();
        String  key = "" + localdate.getDayOfYear()   
                    + localdate.getDayOfMonth()
                    + localdate.getDayOfWeek()
                    + localtime.getHourOfDay()
                    + localtime.getMinuteOfHour()
                    + localtime.getSecondOfMinute()
                    + localtime.getMillisOfSecond();
        System.out.println(key);
        System.out.println(Integer.parseInt(key.trim()));
      return 0;
    }
}
  

的System.out.println(键);

输出:117275232750437

  

的System.out.println(的Integer.parseInt(key.trim()));

java.lang.NumberFormatException:对于输入字符串:“117275232750437”

我使用了id.trim()函数来消除前导和尾随空格,但这也没有解决我的问题。

请不要将此问题重复标记为因为其他类似的问题对我没什么帮助,这就是为什么我创建了这个新问题,所以我希望在这里得到最好的答案。

3 个答案:

答案 0 :(得分:2)

使用Long代替整数,因为它超出了Integer

的范围
  String s = "117275232750437";
  System.out.println(Long.parseLong(s));
  • 整数范围:-2,147,483,648至2,147,483,647
  • 长距离:-9,223,372,036,854,775,808至9,223,372,036,854,775,807

答案 1 :(得分:1)

整数的最大值是2,147,483,647,输入太大。请改用Long

答案 2 :(得分:0)

你的号码太大了,你应该使用Long int的最大值为2.147.483.647。