Java 如何正确打印枚举数元素?

Java 如何正确打印枚举数元素?,java,catalina,Java,Catalina,我试图理解别人写的java程序,但我不懂java。我编写了一个简短的方法来转储请求对象的属性 public void dumpRequest(HttpServletRequest request) { String[] attrNames = new String[100]; // hard coded int ani = 0; Enumeration rns = request.getAttributeNames(); while (rns.hasMoreE

我试图理解别人写的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("++++++++++++++++++++++");

}
公共无效转储请求(HttpServletRequest){
String[]attrNames=新字符串[100];//硬编码
int ani=0;
枚举rns=request.getAttributeNames();
while(rns.hasMoreElements()){
out.println(“属性名:+rns.nextElement());
attrNames[ani]=rns.nextElement().toString();
ani=ani+1;
}
out.println(“+ani+”心房”);
字符串cn;
对于(int n=0;n
令我恐惧的是,我意识到NetBeans变量选项卡在请求对象上显示的属性比我的代码输出多出两倍。 这里似乎记录了枚举:


我做错了什么?

在此块中,您两次调用nextElement方法

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

你应该给nextElement打一次电话。将其放入变量中,然后使用该变量。

您能给出一个输出示例吗?请完全阅读,注意:)。我猜他只是运气不好,因为它的元素数是偶数,否则他会得到无接触元素例外。@JohnHumphreys-w00te正是如此!:-)