2014-05-08 93 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'時你應該設置正確的對齊方式。 –