iT邦幫忙

0

JAVA,JSP迭代陣列內值加總

  • 分享至 

  • xImage

大家好,最近在開發專案中接觸到迭代 iterator
前端透過迭代將list中的值秀出來
但最近需要開發加總欄位
也就是將前面的值給加總,但必須根據月份
前端頁面如圖 目前就是需要開發(加總)欄位
https://ithelp.ithome.com.tw/upload/images/20220615/20137810EbumUAzMHP.png

.jsp程式碼

						<table width="90%" align="center">
							<tr>
								<th class="C" width="10%">捐贈月份/捐贈數量</th>
								<s:iterator value="mbapplyDonateList" status="stat">
								<th class="C" width="15%"><s:property value="CateName + ' ' + MateName" /></th>
								</s:iterator>
								<th class="C" width="10%">加總</th>								
							</tr>
							<s:iterator value="beginToReportmonth" status="stat">
							<tr class="Mateuse">
								<th class="C_CONTENT" width="10%"><s:property value= "beginToReportmonth[#stat.index]"/></th>
								<s:iterator value="MateUseList" status="stat2"> 
								<th class="C_CONTENT" width="15%">
								<s:textfield id="materialmonthUse" class="materialmonthUse needdisabled" name="MateUseList[#stat2.index][#stat.index]" cssStyle="width:80%" size="3" maxlength="7" type="number" />
								</th>
								</s:iterator>
<!-- 								新增每月捐贈數量加總 -->
								<s:iterator value="MateUseSumList" status="stat3" >
								<th class="C_CONTENT" width="10%">
								<s:textfield id="materialmonthUseSum" class="materialmonthUseSum needdisabled" name="MateUseSumList[#stat3.index]" cssStyle="width:80%" size="3" maxlength="7" type="number"/>
								</th>
								</s:iterator>
							</tr>
							</s:iterator>
							<tr>
								<td class="C" width="10%">總計</td>
								<s:iterator id="MateUseMonthTotalList" value="MateUseMonthTotalList" status="stat">
								<th class="C_CONTENT" width="15%"><s:property value="MateUseMonthTotalList[#stat.index]" /></th>
								</s:iterator>
							</tr>
							<tr>
								<td class="C" width="10%">使用率</td>
								<s:iterator id="mbapplyDonateList" value="mbapplyDonateList" status="stat">
								<th class="C_CONTENT Usept" width="15%"><s:property value="materialPt" />%</th>
								</s:iterator>
							</tr>
							<tr>
								<td class="C" width="10%">剩餘量</td>
								<s:iterator id="mbapplyDonateList" value="mbapplyDonateList" status="stat">
								<th class="C_CONTENT Remain" width="15%"><s:property value="materialRemain" /></th>
								</s:iterator>
							</tr>
						</table>
 

------------------------------------------------------------------




新增每月捐贈數量那邊為我要開發的項目
我不確定我新寫的<s:iterator value="MateUseSumList" status="stat3">那段是否正確
因為必須與後端連接資料才能正確顯示


後端程式碼
		//查詢捐贈物資
		
		DataList mbapplyDonate = dao2.findFdCaseMaterialList(fdSerno);
		DataList mbreportMaterialUse = dao3.findMbReportMaterial(getReportserNo());
		DataList mbreportMateUse = dao3.findMbReportMateUse(getReportserNo());
		
		//查詢捐贈物資每月使用數量
		List BeginToReportmonth = getBeginToReportmonth();
		MateUseList = new ArrayList<List>();
		MateUseSumList = new ArrayList<List>();
		MateUseMonthTotalList = new ArrayList<List>();
		for (int i=0; i<mbapplyDonate.size(); i++) {
			int total = 0 ;
			int sum = 0 ; //每月捐贈品項加總
			List tempList3 = new ArrayList();
//			List tempList4 = new ArrayList();
//			List sumList = new ArrayList();
			for (int j=0; j<BeginToReportmonth.size(); j++) {
				if (!mbreportMateUse.isEmpty()) {
					try {
						tempList3.add(mbreportMateUse.get(j*mbapplyDonate.size() + i).getValue("USEDNUM") == null ? "0" : mbreportMateUse.get(j*mbapplyDonate.size() + i).getValue("USEDNUM"));
//						tempList4.add(tempList3.get(j));
					} catch (Exception e) {
						tempList3.add("0");
//						tempList4.add("0");
					}
				} else {
					tempList3.add("0");
//					tempList4.add("0");
				}
//				System.out.println("tempList4="  + tempList4);
			}
			for (int k=0; k<tempList3.size(); k++) {
				total = total + Integer.parseInt(tempList3.get(k).toString());
			}
			MateUseList.add(tempList3);
//			MateUseSumList.add(tempList4);
			MateUseMonthTotalList.add(total);
		}

我註解掉的是我在實驗的部分,而我也將tempList印出後發現長這樣
https://ithelp.ithome.com.tw/upload/images/20220615/20137810pEf0l2OfUw.png
他是依照迴圈i=0時印出第一個品項的數量
當j迴圈跑完在重跑一次後,才會印出第二個品項的數量
https://ithelp.ithome.com.tw/upload/images/20220615/20137810uZuPEtvBfd.png

大概像這樣
問題來了
我該怎麼將List中的迴圈跑第一次的第一個數值,與迴圈跑第二次的第一個數值做相加呢..
以圖來看的話,就是希望達成這樣
https://ithelp.ithome.com.tw/upload/images/20220615/201378109O8g2TyChR.png

是否需要在迴圈中將數值給取出處理?再透過List將數值秀出?
還有前端Struts的迭代用法懇請大神指點是否正確><

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答