发生数字格式异常

时间:2013-03-13 06:34:11

标签: java

我正在使用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";
                    }

2 个答案:

答案 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";

      }