2014-10-10 62 views
0

我有一個表單,我想一次輸入一個數字。從jsp頁面中的表單中一次獲取5個數字,並用Java類別計算平均值?

創建一個對象,並傳遞的getParameter()值到它,

<form action="index.jsp" name="form" method="GET"> 
    <input type="text" value="" name="input" /> 
    <input type="hidden" name="hiddenCounter" value="" /> 
    <% 
    String input = request.getParameter("input"); 
    String hiddenCounter = request.getParameter("hiddenCounter");    
    control.MainProgram main = new control.MainProgram(input, hiddenCounter); 
    %>   

    <input type="submit" value="Submit Numbers" /> 
    <% out.println(main.getResult()); %> 
    </form> 

在一個Java類的構造解析爲int的值,並設置變量

public MainProgram(String input, String hiddenCounter) {  

    try {   
     number = Integer.parseInt(input);   
     counter = Integer.parseInt(hiddenCounter);   
    } catch (NumberFormatException e) { 
    }   
} 


public int getResult() { 
    return number; 
} 

如何可以每次提交數字時總結數字?

問題是每次調用構造函數時都會將變量設置爲提交的數字。

number+=number; 

dosent工作(導致其重置變量)

香港專業教育學院找遍&搜索能有人幫助?

+0

JSP中的Scriptlets'<% ... %>'已被棄用八年。 這是2006年的一篇文章,解釋他們爲什麼不好,以及可以用什麼來代替。 http://www.javaranch.com/journal/200603/Journal200603.jsp#a5 當然,這篇文章有更現代的選擇。 – 2014-10-10 16:49:26

回答

0

如果您不擔心多線程訪問,您可以簡單地聲明numberstatic

該變量將被綁定到control.MainProgram而不是其實例。

然後你...

try {   
     number += Integer.parseInt(input); 

...然後聲明getResultstatic,以及...

...然後<% out.println(control.MainProgram.getResult()); %>

注意調用它,這並不正如你的頭銜所暗示的那樣,給你平均值 - 它給你的總和。

但它很簡單,可以在您的static int getResult方法的正文中實現平均值。

+0

謝謝先生! – Aaron 2014-10-10 16:31:52

+0

@Aaron不客氣Sir;) – Mena 2014-10-10 16:36:36

+0

再次抱歉,但是我怎麼會添加隱藏域計數器,並在一定數量的提交後執行代碼? – Aaron 2014-10-10 16:53:46

0

您必須將總和的總和傳遞給會話變量。你可以通過獲得這樣的會話來達到這個目的。 HttpSession session = request.getSession(); session.setAttribute("UserName", username); 然後你可以通過使用getAttribute()函數來獲取屬性。這應該適用於併發用戶。如果您需要更多幫助

+0

謝謝隊友!虐待嘗試,一旦我可以得到一個隱藏的現場計數器工作:) – Aaron 2014-10-10 16:54:24

+0

我相信你是這樣做的錯誤方式。您不需要隱藏的字段計數器,只需將計數存儲在會話中即可。會話就像是一個抓包,用於jsp頁面和servlet之間的變量。它應該用於隱藏的表單域。除非您希望該人爲某個頁面添加書籤或在該頁面上保留24小時以上 – Joshua 2014-10-10 17:02:12