2014-05-08 138 views
2

初学者的问题。我有一个基本的html表单,其中一个标有“输入数字”的用户输入文本框和一个标记为“创建乘法表”的提交按钮。这是使用一个servlet来显示一个html格式的乘法表。一切正常,只是格式化关闭;我似乎无法得到正确的第一行和最左列。它应该是这样的:Java Servlet基于用户输入生成m乘n乘法表

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>"); 
    } 

} 
} 

回答

-1

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

+0

您能评论投票的原因吗? –

+0

那么在HTML表格中对齐东西的最佳解决方案就是CSS,这就是为什么我发布了包含相应CSS的小提琴。国际海事组织这甚至不是一个Java问题 –

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. 
+0

更正了这些错误,它仍然无法正确显示。谢谢你抓住那些人,我的眼睛正在穿越。 – user2948381

+0

既然您已经有了正确的HTML代码,您可能需要添加'CSS'来设置单元格样式 –

+0

@ user2948381编辑为包含请求的文本对齐方式。根据你的例子,当'i == 1'或'j == 1'时你应该设置正确的对齐方式。 –