【问题标题】:How do I properly print enumerator elements?如何正确打印枚举器元素?
【发布时间】:2018-09-06 13:24:56
【问题描述】:

我正在尝试理解别人编写的 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】:

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

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

你应该调用一次 nextElement。将其放入变量中,然后使用该变量。

【讨论】:

  • 完全阅读过去,好地方:)。我猜他只是不幸的是它的元素数量是偶数,否则他会得到 NoSuchElementException。
  • @JohnHumphreys-w00te 完全正确! :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 2023-02-25
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多