0

いくつかのif/elseステートメントを含むコードがあります。ただし、「else」ケースがスローされると、後続のすべてのステートメントも「else」になります。これがコードです、助けていただければ幸いです!

public List<Integer> htmlHelper(String arg) throws IOException,
        XPatherException, ParserConfigurationException,
        XPathExpressionException {
    CleanerProperties props = new CleanerProperties();

    props.setTranslateSpecialEntities(true);
    props.setTransResCharsToNCR(true);
    props.setOmitComments(true);

    HtmlCleaner cleaner = new HtmlCleaner(props);
    rootNode = cleaner.clean(arg);


    TagNode tagNode = new HtmlCleaner(props).clean(new URL(
            "http://www.athletics.psu.edu/psustrength/index_rec.asp"));
    org.w3c.dom.Document doc = (org.w3c.dom.Document) new DomSerializer(
            new CleanerProperties()).createDOM(tagNode);

    XPath jpath = XPathFactory.newInstance().newXPath();
    String recinfo = (String) jpath
            .evaluate(

"/html/body/div/div[1]/div/div/table/tbody/tr[3]/td[2]/p[2]/text()",
                    doc, XPathConstants.STRING);
    String recnum = recinfo.replaceAll("\\D+", "");

    if (recnum != null && recnum.length() == 0) {

        recnumint = 500;
        grec = 0;
    } else {
        recnumint = Integer.parseInt(recnum);
        grec = recnumint;
    }

    XPath ipath = XPathFactory.newInstance().newXPath();
    String iminfo = (String) ipath
            .evaluate(

"/html/body/div/div[3]/div/div/table/tbody/tr[2]/td[2]/p[2]/text()",
                    doc, XPathConstants.STRING);
    String imnum = iminfo.replaceAll("\\D+", "");

    if (imnum != null && recnum.length() == 0) {

        imint = 400;
        gim = 0;
    } else {
        imint = Integer.parseInt(imnum);
        gim = imint;
    }

    XPath xpath = XPathFactory.newInstance().newXPath();
    String whiteinfo = (String) xpath
            .evaluate(

"/html/body/div/div[3]/div/div/table/tbody/tr[1]/td[2]/p[2]/text()",
                    doc, XPathConstants.STRING);
    String whitenum = whiteinfo.replaceAll("\\D+", "");

    if (whitenum != null && recnum.length() == 0) {

        whitenumint = 450;
        gwhite = 0;
    } else {
        whitenumint = Integer.parseInt(whitenum);
        gwhite = whitenumint;
    }

    XPath fpath = XPathFactory.newInstance().newXPath();
    String fitinfo = (String) fpath
            .evaluate(

"/html/body/div/div[3]/div/div/table/tbody/tr[4]/td[2]/p[2]/text()",
                    doc, XPathConstants.STRING);
    String fitnum = fitinfo.replaceAll("\\D+", "");

    if (fitnum != null && recnum.length() == 0) {

        fitint = 470;
        gfit = 0;
    } else {
        fitint = Integer.parseInt(fitnum);
        gfit = fitint;
    }



    List<Integer> list = new ArrayList<Integer>();
    list.add(recnumint);
    list.add(whitenumint);
    list.add(imint);
    list.add(fitint);

    return list;
}

}

前述のように、この問題は最初の「else」ステートメントがスローされたときに発生します。最初のケースが「if」で、2番目の「else」の場合、3番目と4番目も「else」になります

4

2 に答える 2

2

あなたifの s はすべて同じ 2 番目の条件を共有しています。おそらくそれが理由ですか?

ということですか

if (imnum != null && imnum .length() == 0) {
                     ^^^^^^

それ以外の

if (imnum != null && recnum.length() == 0) {

そして同様に

if (whitenum != null && whitenum.length() == 0) {
                        ^^^^^^^^^

そしてもちろん..

if (fitnum != null && fitnum.length() == 0) {
                      ^^^^^^
于 2013-01-21T01:59:04.187 に答える
0

NOT(A AND B)は(NOT A)OR(NOT B)と同じであることに注意してください。デバッガーを使用して、どの条件が失敗しているかを把握します。

于 2013-01-21T02:04:12.027 に答える