Я хочу добавить случайные данные в таблицу в формате HTML с помощью JSP - PullRequest
0 голосов
/ 03 мая 2019

У меня проблемы с выполнением домашней работы по веб-разработке, потому что я недостаточно знаю Java. Это кажется очень простым, но это очень сложная задача для меня. Я хочу это объяснить.

Мой код сгенерирует 5 случайных чисел, а затем отобразит их на странице в виде списка. Каждое сгенерированное число будет между 1 и 100 и будет иметь имя переменной. После этого код сгенерирует таблицу с 4 столбцами и 5 строками. Имена переменных сгенерированных чисел будут записаны в первых двух столбцах случайным образом. В третьем столбце появится случайная математическая операция. В четвертом столбце будет отображен результат. После этого вы сами создадите математическую функцию и передадите результаты этой функции в качестве параметров, код будет вычислять результат функции, а к результату будет применен мод 10. Окончательный результат будет показан пользователю. Ниже будет 10 ссылок, которые помечены от 0 до 9. Если пользователь нажимает на правильную ссылку, страница переходит на вашу личную страницу, в противном случае пользователь будет перенаправлен на страницу, которая отображает неверный результат .

taskimage

Я работал 4 часа, но я написал только этот код. Конечно, это не работает.

    <h2>Random Table</h2>
<TABLE>
<% for(int row=1; row <= 5; row++) { %>
    <TR>

<%      
List<Integer> sayilar1 = new ArrayList<Integer>();

        int random = (int)(Math.random() * 50); 
        sayilar1.add(random);

    %>
        <TD> (<%=random%>)
        </TD>
         <% } %>

<% for(int row2=1; row2 <= 5; row2++) { %>
<%      
List<Integer> sayilar2 = new ArrayList<Integer>();
        int random2 = (int)(Math.random() * 50);    
sayilar2.add(random2);
    %>
          <TD>
          <%=random2%>
        </TD>
     <% } %>
</TR>
</TABLE>

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Чтобы облегчить вашу проблему, вам нужно разбить ее на каждый шаг.

Мой код сгенерирует 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>

Конечно, это можно улучшить (перечисление для операции и т. Д. ...). Надеюсь, это поможет.

0 голосов
/ 03 мая 2019

Учитывая, что это задание, я не уверен, что смогу полностью вам помочь, но я мог бы помочь вам начать.

Ваш код показывает результат печати одного значения для каждой строки.

Вы хотите иметь что-то похожее на картинку, я бы настроил это следующим образом.

<%@ page import ="java.util.Random" %>

<html>
<head>
<title>Hello World</title>

<style>
    table,th,td{
        border: 1px solid #000;
    }
</style>
</head>
<body>

    <%
        Random rand = new Random();

        // Create a collection of operations
        // Create a collection of variable names
    %>

    <h2>Random table</h2>
    <table>
        <tr>
            <th>First var</th>
            <th>Second var</th>
            <th>Operation</th>
            <th>Result</th>
        </tr>
        <% for(int row=1; row <= 5; row++) { %>
            <tr>
                <td>
                    <% /* Random variable name goes here */ %>
                </td>
                <td>
                    <% /* Random variable name goes here */ %>
                </td>
                <td>
                    <% /* Random operations goes here */ %>
                </td>
                <td>
                    <% /* Random result goes here */ %>
                    <% /* Hint... use rand.nextInt(maxValue) */ %>
                </td>
            </tr>
        <% } %>
    </table>
</body>
</html>

Дайте мне знать, если вам нужны пояснения.:)

...