如何修复NumberFormatException?

时间:2019-01-24 06:00:59

标签: java

var app = new Vue({
  el: '#app',
  data: {
    location: {
      legal_name: 'Name',
      address1: 'Address1',
      pri_phone: 'Phone',
    }
  }
});

对于输入字符串:<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <h5>{{ location.legal_name }}</h5> <p>{{ location.address1 }}</p> <p v-if="location.address2">{{ location.address2 }}</p> <p>{{ location.pri_phone }}</p> </div>我得到了SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String selectQueryForPatient = "SELECT registration_id, dob FROM patient_registration WHERE registration_id IN(SELECT max(registration_id)FROM patient_registration)"; String insertQuery = "INSERT INTO patient_master_info(patient_id) VALUES (?);"; String id = null; String dob = null; int generatedID = 0; try { pst = con.prepareStatement(selectQueryForPatient); rs = pst.executeQuery(); while(rs.next()){ id = Integer.toString(rs.getInt(1)); dob = rs.getString(2); System.out.println("Id : "+id+" "+"DOB: "+dob); Date dt = sdf.parse(dob); dob = sdf.format(dt); String result = id.concat(dob); generatedID = Integer.parseInt(result); } pst = con.prepareStatement(insertQuery); pst.setInt(1, generatedID); pst.execute(); } catch(Exception e) { e.printStackTrace(); } 。我该如何解决?

error trace`

2 个答案:

答案 0 :(得分:2)

我不知道您要做什么,但是您的问题是将日期附加到整数值的结果很容易超出整数范围。

例如,假设id为“ 30”,而dob(从数据库中读取)为“ 20190123”。 id.concat(dob)的结果是“ 3020190123”,它大于int的最大值“ 2147483647”。

您的样本值12919851203更大(接近130亿,而Integer.MAX_VALUE约为20亿)。


如果该值必须像数字一样可排序(其中2 <10),则可以将数据类型更改为longBigInteger

如果排序无关紧要(即可以确定“ 2”大于“ 10”),那么您甚至可以将result存储为String(存储到VARCHAR列中)。

或者您可以解释要解决的问题,以便我们找到解决问题的更好方法。

答案 1 :(得分:1)

此答案不是关于数字格式异常,而是关于您犯的日期格式错误。

目前,您正在将pointers.c:50:22: error: ‘*head’ is a pointer; did you mean to use ‘->’? *head = *head->next; 解析为日期1986-03-01,因为您的1985-12-03包含String dob。您需要两种不同的格式化程序来获得结果:

-
  

19850301

当然,有人会争辩说需要解析成SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdfOut = new SimpleDateFormat("yyyyMMdd"); String dob = "1985-03-01"; Date dt = sdfIn.parse(dob); dob = sdfOut.format(dt); System.out.println(dob); 只是为了获得一个“相似的” Date,如果您确定数据是日期,则可以删除{ {1}}使用:

String

最后,您应该使用- API。

dob = dob.replaceAll("-", "");