【发布时间】:2019-08-07 17:21:09
【问题描述】:
问题:
我想遍历“座位”类的数组。
“座位”代码:
public class Seating {
private int nRow, nCol;
private boolean[][] seats;
public Seating () {
nRow = 8;
nCol = 8;
seats = new boolean[nRow][nCol];
}
“Seating”的一个实例由如下所示的“EventBooking”类创建。
PrintWriter out = response.getWriter();
seats = new Seating(8,8);
seats.setSeatStatus(0,1);
seats.setSeatStatus(1,1);
request.setAttribute("seats", seats.seats);
RequestDispatcher req = request.getRequestDispatcher("/index.jsp");
req.forward(request,response);
以及应该循环这些值的 .jsp。
<c:forEach var = "row" items = "${seats}">
<c:forEach var = "col" items = "${row}">
<c:out value = "${seats}"/>
</c:forEach>
</c:forEach>
我正在尝试发送我的 "Seating" 对象到 .jsp。然后,.jsp 将遍历 Seating 的 2D 数组的值。将打印数组的每个值。
错误:
org.apache.jasper.JasperException: An exception occurred processing [/index.jsp] at line [8]
还有第 8 行。
8: <c:forEach var = "row" items = "${seats}">
感谢任何帮助。
编辑 完整的“座位”代码
public class Seating {
private int nRow, nCol;
public boolean[][] seats;
public Seating () {
nRow = 8;
nCol = 8;
seats = new boolean[nRow][nCol];
}
public Seating (int row, int col) {
nRow = row;
nCol = col;
seats = new boolean[row][col];
}
public boolean seatStatus (int row, int col) {
return seats[row][col];
}
public void setSeatStatus (int row, int col) {
if (seats[row][col] == false) {
seats[row][col] = true;
}
else if (seats[row][col] == true) {
seats[row][col] = false;
}
//else
//Error
}
public int getRowLength () {
return nRow;
}
public int getColLength () {
return nCol;
}
【问题讨论】:
-
我注意到一些语法错误:
seats = new Seating(8,8);不是实例化类的有效方法;它应该是seats = new Seating。另外,setSeatStatus()是否在Seating类中定义?最后,index.jsp中的第 8 行? -
@C.Peck 忽略语法错误,我只包含相关代码以使其更易于阅读。代码编译。第 8 行显示在原始帖子的底部。
-
我仍然认为你不能像你一样实例化
Seating。 Java 类不接受参数。除非您使用seats = new Seating;实例化它,否则它不会编译 -
正如我所说,它确实可以编译。第二个构造函数具有适当的参数。它已被提交,因为它与提出的问题并不完全相关,因此没有真正需要展示它。
-
抱歉,除非我大大高估了我对 Java 的了解,否则代码是无法编译的。除了
Seating类的不正确实例化之外,public Seating ()不是有效的方法签名,因为您没有提供返回类型(它应该是void)并且必须删除Seating之后的空格。只是好奇你所说的“第二个构造函数”是什么?
标签: java arrays jsp servlets jstl