java.lang.NumberFormatException:对于输入字符串:";899999999995“;

java.lang.NumberFormatException:对于输入字符串:";899999999995“;,java,Java,我在运行程序时遇到问题。问题出现在第460行,我将字符串解析为int try { PreparedStatement ps = con.prepareStatement("SELECT water_time, price\nFROM `watering` \nWHERE water_date BETWEEN ? AND ?"); double pricesum = 0; double timesum = 0;

我在运行程序时遇到问题。问题出现在第460行,我将字符串解析为int

       try {
            PreparedStatement ps = con.prepareStatement("SELECT water_time, price\nFROM `watering` \nWHERE water_date BETWEEN ? AND ?");
            double pricesum = 0;
            double timesum = 0;
            ps.setDate(1, new java.sql.Date(sDate.getTime()));
            ps.setDate(2, new java.sql.Date(eDate.getTime()));
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                double time = Double.parseDouble(rs.getString("water_time"));
                double price = Double.parseDouble(rs.getString("price"));
                pricesum = pricesum + price;
                timesum = timesum + time;
            }
            String totalprice = String.valueOf(pricesum);
            String totaltime = String.valueOf(timesum);
            String[] totaltime2 = totaltime.split("\\.");
            int[] intArr = new int[2];
            intArr[0] = Integer.parseInt(totaltime2[0]);
     (line 460)       intArr[1] = Integer.parseInt(totaltime2[1]);
            double price_hour = intArr[0] * 5;
            double price_min = (intArr[1] * 5) / 60.0D;
            double price = (price_hour + price_min);
            jLabel8.setText((totalprice + " €"));
            jLabel7.setText((totaltime + " Ώρες"));
            jLabel12.setText((price+ " €"));
问题

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "8999999999999995"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at MainForm.jButton13ActionPerformed(MainForm.java:460)
at MainForm.access$000(MainForm.java:19)
at MainForm$1.actionPerformed(MainForm.java:135)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

你能理解问题是什么吗?提前谢谢。

该数字不适合
int
,请使用
long

更多信息请参见(重点矿山):

如果 出现以下情况:

  • 第一个参数为null或长度为零的字符串
  • 基数是 小于Character.MIN_基数或大于 Character.MAX_基数
  • 字符串的任何字符都不是 指定的基数,但第一个字符可以是减号 “-”(“\u002D”)或加号“+”(“\u002B”)条件是字符串 超过长度1
  • 字符串表示的值不是int类型的值。

  • 该数字不适用于
    int
    ,请改用
    long

    更多信息请参见(重点矿山):

    如果 出现以下情况:

  • 第一个参数为null或长度为零的字符串
  • 基数是 小于Character.MIN_基数或大于 Character.MAX_基数
  • 字符串的任何字符都不是 指定的基数,但第一个字符可以是减号 “-”(“\u002D”)或加号“+”(“\u002B”)条件是字符串 超过长度1
  • 字符串表示的值不是int类型的值。

  • 如果长到小,使用

    BigInteger value = new BigInteger("8999999999999995",10);
    

    您可以使用值计算数学函数,并最终将其返回为int、long、byte[]或以2、10、16为基数的字符串…

    如果long太小,请使用

    BigInteger value = new BigInteger("8999999999999995",10);
    

    您可以使用值计算数学函数,并最终将其返回为int、long、byte[]或以2、10、16为基数的字符串…

    您知道如何更改代码以使其使用long吗?提前谢谢。@Alexanderpa
    long[]longArr=new long[2];longArr[0]=Long.parseLong(totaltime2[0])
    @alexanderpa
    Long.parseLong
    :您知道如何更改代码以使其与Long一起工作吗?提前谢谢。@Alexanderpa
    long[]longArr=new long[2];longArr[0]=Long.parseLong(totaltime2[0])
    @alexanderpa
    Long.parseLong