java.lang.NumberFormatException:对于输入字符串:";899999999995“;
我在运行程序时遇到问题。问题出现在第460行,我将字符串解析为intjava.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;
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
:
更多信息请参见(重点矿山):
如果
出现以下情况:
该数字不适用于
int
,请改用long
:
更多信息请参见(重点矿山):
如果
出现以下情况:
如果长到小,使用
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])
@alexanderpaLong.parseLong
:您知道如何更改代码以使其与Long一起工作吗?提前谢谢。@Alexanderpalong[]longArr=new long[2];longArr[0]=Long.parseLong(totaltime2[0])
@alexanderpaLong.parseLong
: