実現したいこと
ショッピングカートのプログラムを作っています。
今行いたいのは、注文個数が在庫を上回ったらエラーメッセージをだす、という工程です。
現段階では、全商品に超過個数をいれればエラーメッセージはでます。
そうではなくて、一つでも超過個数のある商品が存在すればエラーメッセージをだす、というプログラムにしたいです。
条件式の書き方をどのように工夫すれば良いでしょうか?
イメージ説明も添付します。
該当のソースコード
@WebServlet("/StockServlet") public class StockServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //入力された注文個数を取得 req.setCharacterEncoding("UTF-8"); //商品ごとに違うので配列を作る List<Number> no = new ArrayList<Number>(); String[] values=req.getParameterValues("number"); for(int i=0;i<values.length;i++) { int number = Integer.parseInt(values[i]); no.add(new Number(number)); } try { //データベース接続 ConnectionDb db = new ConnectionDb(); db.conn(); //商品リスト一覧表示のための配列リスト_このリストに在庫データあり List<Stock> list = new ArrayList<Stock>(); String query = "SELECT S.ITEM_ID,ITEM_NAME,STOCK,PRICE " + "FROM PRODUCT_NAME AS N " + "JOIN PRODUCT_STOCK AS S " + "ON N.ITEM_ID = S.ITEM_ID " + "JOIN PRODUCT_PRICE AS P " + "ON S.ITEM_ID = P.ITEM_ID "; PreparedStatement stmt = db.con.prepareStatement(query); ResultSet rs = stmt.executeQuery(); int counter = 0; while (rs.next()) { String itemName = rs.getString("ITEM_NAME"); int price = rs.getInt("PRICE"); int stock = rs.getInt("STOCK"); String itemId = rs.getString("ITEM_ID"); Number numbr = no.get(counter); list.add(new Stock(stock,itemName,price,itemId,numbr)); counter++; } req.setAttribute("stocks", list); //入力個数が在庫を上回っていなければtrue↓ boolean isOver = false; for(int i=0; i < list.size(); i++) { if( list.get(i).getStock() > Integer.parseInt(values[i])) { isOver = true; } } if(isOver) { RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/stockOK.jsp"); dispatcher.forward(req, res); } else { req.setAttribute("stockErrorMsg", "在庫がありません"); req.setAttribute("products", list); RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/list.jsp"); rd.forward(req, res); } rs.close(); stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } }
イメージ説明
回答2件
あなたの回答
tips
プレビュー