Java Servlet根据用户输入生成一个m乘n的乘法表

时间:2014-05-08 04:06:16

标签: java html servlets html-table multiplication

初学者问题。我有一个基本的html表单,其中一个用户输入文本框标有"输入一个数字"和一个标有&#34的提交按钮;创建一个乘法表"。这是使用servlet来显示html格式的乘法表。其他一切工作正常,格式化已关闭;我似乎无法正确排列顶行和最左列。它应该是这样的:

the x's represent the products

相反它看起来像这样(在这个例子中输入数字是7):

enter image description here

我的servlet代码是:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Main")
public class Main extends javax.servlet.http.HttpServlet implements
    javax.servlet.Servlet {
static final long serialVersionUID = 1L;

public Main() {
    super();

}

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException    {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String title = "Multiplication Table";
    out.println("<html>");
    out.println("<head>");
    out.println("<title>" + title + "</title>");
    out.println("</head>");
    out.println("<body");

    out.println("<center>");
    out.println("<table border=1 cellpadding=0 cellspacing=0 width=70%>");

    try {
        int op = Integer.parseInt(request.getParameter("op"));
        if (op > 10) {
            out.println("<h1>Enter a number between 1 and 10!</h1>");

        } else if (op < 10) {
            for (int i = 1; i <= op; i++) {

                out.println("<tr>");
                for (int j = 1; j <= op; j++) {

                    out.println("<td>" + i * j + "</td>");
                }
                out.println("</tr>");
                System.out.println();
            }
        }
    } catch (NumberFormatException e) {
        out.println("<body><h1>Enter numbers only!</h1></body>");
    }

}
}

2 个答案:

答案 0 :(得分:0)

我看到一些问题。对于一个你可能不应该在Servlet中嵌入HTML,你也应该尝试验证你的HTML - 你会发现一些问题。

您没有关闭<body代码。

您尚未关闭<table>代码。

您正在呼叫System.out.println()并且您可能意味着out.println();此外,您可能会在表格中嵌入标题。

out.println("<body>"); <-- added `>`
out.println("<center>");
try {
    int op = Integer.parseInt(request.getParameter("op"));
    if (op > 10) {
        out.println("<h1>Enter a number between 1 and 10!</h1>");
    } else if (op < 10) {
        out.println("<table border=1 cellpadding=0 cellspacing=0 width=70%>");
        for (int i = 1; i <= op; i++) {
            out.println("<tr>");
            for (int j = 1; j <= op; j++) {
                // EDIT
                if (i == 1 || j == 1) {
                  out.println("<td align='right'>" + i * j + "</td>");
                  // out.println("<td style='text-align: right'>" + i * j + "</td>");
                } else {
                  out.println("<td>" + i * j + "</td>");
                }
                // END EDIT
            }
            out.println("</tr>");
            out.println(); <-- out.println() - not System.out.println();
        }
        out.println("</table>"); // <-- close the table tag.
    }
} catch (NumberFormatException e) {
    out.println("<h1>Enter numbers only!</h1>"); // <-- no <body>
}
out.println("</center>\n</body>"); <-- close center and body.

答案 1 :(得分:-1)

您可以使用CSS first-child属性实现此目的。查看this fiddle