如何正确打印枚举器元素?

问题描述 投票:1回答:1

我试图了解别人写的java程序,我不知道java。我写了一个简短的方法来转储请求对象的属性。

public void dumpRequest(HttpServletRequest request) {

    String[] attrNames = new String[100]; // hard coded
    int ani = 0;

    Enumeration rns = request.getAttributeNames();
    while (rns.hasMoreElements()) {
        out.println("attribute name: " + rns.nextElement());
        attrNames[ani] = rns.nextElement().toString();
        ani = ani + 1;
    }

    out.println("" + ani + " atributes");
    String cn;
    for (int n = 0; n < ani; n++) {
        cn = attrNames[n];
        out.println("** " + cn + " - " + request.getAttribute(cn));
    }
    out.println("++++++++++++++++++++++");

}

令我恐惧的是,我已经意识到,与我的代码输出相比,NetBeans变量选项卡在请求对象上显示的属性要多两倍。这里的枚举似乎记录在案:https://tomcat.apache.org/tomcat-4.1-doc/catalina/docs/api/org/apache/catalina/util/Enumerator.html

我究竟做错了什么?

java catalina
1个回答
2
投票

在此块中调用nextElement方法两次:

while (rns.hasMoreElements()) {
        out.println("attribute name: " + rns.nextElement());
        attrNames[ani] = rns.nextElement().toString();
        ani = ani + 1;
    }

你应该拨打nextElement一次。把它放在变量中,然后使用该变量。

© www.soinside.com 2019 - 2024. All rights reserved.