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

我想理解别人写的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


我究竟做错了什么?


胡子哥哥
浏览 199回答 1
1回答

蝴蝶刀刀

在此块中调用 nextElement 方法两次:while (rns.hasMoreElements()) {&nbsp; &nbsp; &nbsp; &nbsp; out.println("attribute name: " + rns.nextElement());&nbsp; &nbsp; &nbsp; &nbsp; attrNames[ani] = rns.nextElement().toString();&nbsp; &nbsp; &nbsp; &nbsp; ani = ani + 1;&nbsp; &nbsp; }你应该调用 nextElement 一次。把它放在变量中,然后使用该变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java