如何正确打印枚举器元素?
How do I properly print enumerator elements?
我正在尝试理解 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
我做错了什么?
您在此块中调用 nextElement 方法两次:
while (rns.hasMoreElements()) {
out.println("attribute name: " + rns.nextElement());
attrNames[ani] = rns.nextElement().toString();
ani = ani + 1;
}
你应该调用 nextElement 一次。把它放在变量中,然后使用那个变量。
我正在尝试理解 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
我做错了什么?
您在此块中调用 nextElement 方法两次:
while (rns.hasMoreElements()) {
out.println("attribute name: " + rns.nextElement());
attrNames[ani] = rns.nextElement().toString();
ani = ani + 1;
}
你应该调用 nextElement 一次。把它放在变量中,然后使用那个变量。