我正在使用java和flex作为我的Web应用程序,它将用于研究所。
如果我的结果是标记,那么少于60将是Re Appear RA。对于等级系统,U将重新出现。但如果结果是成绩系统,我将面临NumberFormatException
。在此我附上了我的代码。请尽快就此提出建议。
XMLProcess xp = new XMLProcess();
try {
Document doc = xp.processXml(xml);
Element el = doc.getDocumentElement();
NodeList nl = el.getElementsByTagName("batch");
if (nl != null && nl.getLength() > 0) {
for (int i = 0; i < nl.getLength(); i++) {
Element el1 = (Element) nl.item(i);
NodeList nl1 = el1.getElementsByTagName("student");
String schKey = el1.getAttribute("schkey");
if (nl1 != null && nl1.getLength() > 0) {
for (int j = 0; j < nl1.getLength(); j++) {
String reAppear = "";
String sms = "";
Element el2 = (Element) nl1.item(j);
String studentName = el2.getAttribute("name");
String studentId = el2.getAttribute("id");
String studentKey = el2.getAttribute("key");
sms += "" + studentName + "\n";
sms += "Sem "
+ sem.substring(sem.indexOf("-") + 1, sem.length())
+ " "
+ course
+ "\n";
sms += "" + exam + "\n";
sms += (el2.getAttribute("mrg").equalsIgnoreCase("G")
? "Sub: Grade"
: "Sub: Marks")
+ "\n";
for (int k = 0;
k < el2.getAttributes().getLength();
k++) {
String aName =
el2.getAttributes().item(k).getNodeName();
if (aName.equalsIgnoreCase("key")
|| aName.equalsIgnoreCase("key")
|| aName.equalsIgnoreCase("id")
|| aName.equalsIgnoreCase("name")
|| aName.equalsIgnoreCase("status")
|| aName.equalsIgnoreCase("total")
|| aName.equalsIgnoreCase("percentage")
|| aName.equalsIgnoreCase("mrg")) {
} else {
sms += el2.getAttributes().item(k).getNodeName().substring(
1)
+ ": "
+ (el2.getAttribute("mrg").equalsIgnoreCase("G")
? (el2.getAttributes().item(k).getNodeValue())
: (Integer.parseInt(
el2.getAttributes().item(k).getNodeValue())
< 60
? "RA"
: el2.getAttributes().item(k).getNodeValue()))
+ "\n";
/***Here exception occurs***/ if (Integer.parseInt(
el2.getAttributes().item(k).getNodeValue())
<= 60) {
reAppear = "SM";
}
if (el2.getAttributes().item(k).getNodeValue()
== "U") {
reAppear = "SG";
}
}
}
if (reAppear.equalsIgnoreCase("SM")) {
sms += "RA : FAIL LESS 60 marks. ";
sms += "Meet Principal/Director/HOD";
}
if (reAppear.equalsIgnoreCase("SG")) {
sms += "U - Fail Re Appear. ";
sms += "Meet Principal/Director/HOD";
}
答案 0 :(得分:4)
Integer.parseInt(..)
在收到的字符串表达式为null或不是有效整数时产生此异常。你有2个地方可以使用这个电话。看起来您对XML节点中包含的数据的假设是不正确的。节点不存在,或者其值不是整数。
答案 1 :(得分:0)
if (Integer.parseInt(el2.getAttributes().item(k).getNodeValue())<= 60)
此行为您创建问题。 你需要编写像
这样的代码if (el2.getAttributes().item(k).getNodeValue()
== "U") {
reAppear = "SG";
}else if (Integer.parseInt(
el2.getAttributes().item(k).getNodeValue())
<= 60) {
reAppear = "SM";
}