Чтобы облегчить вашу проблему, вам нужно разбить ее на каждый шаг.
Мой код сгенерирует 5 случайных чисел, затем отобразит их на странице
как список. Каждое сгенерированное число будет между 1 и 100 и будет
иметь имя переменной.
Создайте класс, соответствующий вашим потребностям.
public class Variable {
int value;
String name;
public Variable() {}
public Variable(int value, int name) { this.value = value; this.name = "v"+name; }
public void setValue(int value) { this.value = value; }
public int getValue() { return this.value; }
public void setName(String name) { this.name = name; }
public String getName() { return this.name; }
}
Создайте 5 случайных величин от 1 до 100 и сохраните их с именем.
ArrayList<Variable> variableList = new ArrayList<>();
Random rand = new Random();
for (int i = 1 ; i < 6 ; i++) {
variableList.add(new Variable(rand.nextInt(100)+1, i));
}
Создайте другой класс, чтобы он соответствовал ограничениям строк в вашей таблице (отсутствует оператор и функция результата).
public class Operation {
Variable variable1;
Variable variable2;
int operator;
public Operation() {}
public Operation(Variable variable1, Variable variable2, int operator) {
this.variable1 = variable1;
this.variable2 = variable2;
this.operator = operator;
}
public Variable getVariable1() {
return this.variable1;
}
public void setVariable1(Variable variable1) {
this.variable1 = variable1;
}
public Variable getVariable2() {
return this.variable2;
}
public void setVariable2(Variable variable2) {
this.variable2 = variable2;
}
public String getOperatorSign() {
String operatorSign = "";
if (operator == 1) {
operatorSign = "+";
}
else if (operator == 2) {
operatorSign = "-";
}
else if (operator == 3) {
operatorSign = "*";
}
else { // operator == 4
operatorSign = "/";
}
return operatorSign;
}
public Integer getResult() {
int result = 0;
if (operator == 1) {
result = variable1.getValue()+variable2.getValue();
}
else if (operator == 2) {
result = variable1.getValue()-variable2.getValue();
}
else if (operator == 3) {
result = variable1.getValue()*variable2.getValue();
}
else { // operator == 4
result = variable1.getValue()/variable2.getValue();
}
return result;
}
}
Заполните новый список, соответствующий вашей таблице, 5 значениями.
ArrayList<Operation> tableList = new ArrayList<>();
for (int i = 1 ; i < 6 ; i++) {
Variable variable1 = variableList.get(rand.nextInt(5));
Variable variable2 = variableList.get(rand.nextInt(5));
// not zero so random int +1 to get [1;4] instead of [0;3]
tableList.add(new Operation(variable1, variable2, rand.nextInt(3)+1));
}
Теперь у вас есть таблица, передайте ее в атрибут запроса или около того, а затем выполните итерации по ней в вашем JSP, чтобы создать макет.
<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table>
<tr>
<td>First var</td>
<td>Second var</td>
<td>Operator</td>
<td>Result</td>
</tr>
<c:forEach items="${tableList}" var="row">
<tr>
<td>${row.variable1.value}</td>
<td>${row.variable2.value}</td>
<td>${row.getOperatorSign()}</td>
<td>${row.getResult()}</td>
</tr>
</c:forEach>
</table>
Конечно, это можно улучшить (перечисление для операции и т. Д. ...).
Надеюсь, это поможет.