※ ChatGPTを利用し、要約された質問です(原文:こういうプログラムをどう書けばいいのでしょう)
Javaプログラムで商品一覧表示
このQ&Aのポイント
Javaプログラムを使用して、指定した商品番号に対応する商品の情報を表示する方法について教えてください。
指定した商品番号に対応する商品の情報を縦書きで表示するためのJavaプログラムを作成したいです。どのようにすればよいでしょうか。
商品情報が記載されたテキストファイルを読み込み、指定した商品番号に対応する商品の情報を表示するJavaプログラムを作成したいです。アドバイスをいただけますか?
こういうプログラムがあります。
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
import="java.io.*,java.util.*,java.text.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>商品一覧</title>
</head>
<body>
<h1 style="font-size:14pt;background:#ccccff">商品一覧</h1>
<table border="0">
<tr style="background:#ccccdd">
<th>商品ID</th><th>商品名</th><th>現在価格</th><th>入札</th><th>残日数</th>
</tr>
<%
String tmpStr;
StringTokenizer tkn;
FileReader fr = new FileReader(application.getRealPath("data.txt"));
BufferedReader br = new BufferedReader(fr);
DecimalFormat df;
df = new DecimalFormat("###,###");
Calendar calToday = Calendar.getInstance();
Calendar calTmp = Calendar.getInstance();
//ストリームが読み込み可能かどうかを返します
while (br.ready()) {
tmpStr = br.readLine();
out.println("<tr style='background:#ffffcc'>");
tkn = new StringTokenizer(tmpStr, "\t");
byte i;
i=0;
String strTmp;
while (tkn.hasMoreTokens()) {
strTmp = tkn.nextToken();
if (i==1) {
out.println("<td>" + strTmp + "</td>");
}else if (i!=4) {
out.println("<td align='right'>" + df.format(Long.parseLong(strTmp)) + "</td>");
}else { //残日数の計算
calTmp.set(Calendar.YEAR, Integer.parseInt(strTmp.substring(0,4)));
calTmp.set(Calendar.MONTH, Integer.parseInt(strTmp.substring(5,7))-1);
calTmp.set(Calendar.DATE, Integer.parseInt(strTmp.substring(8,10)));
Date dteToday = calToday.getTime();
Date dteTmp = calTmp.getTime();
long diff = (dteTmp.getTime() - dteToday.getTime()) / (24*60*60*1000);
out.println("<td align='right'>" + Long.toString(diff) + "</td>");
}
i++;
}
out.println("</tr>");
}
br.close();
fr.close();
%>
</table>
</body>
</html>
このプログラムが読み込んでいるテキストファイルです。
100 タンロップ1箱 15000 1 2009/03/15
200 WELSON36個 3700 2 2009/03/20
300 フリジストンXT81個 12500 2 2009/03/21
400 120球プレッシャーボール 16000 0 2009/03/23
500 ヨネッグススポンジボール 1010 0 2009/03/25
問題のプログラムは最初の100、200、300、400、500という数字を入力すると、その商品の内容が縦書きで表示されるというモノです。
tmpStr = br.readLine();
で1行分取り出して、
tkn = new StringTokenizer(tmpStr, "\t");
でタブで区切って表示させるプログラムなのでどうにかなるようにも思えるのですが……。
1番難しいと思うのは検索番号を入力した際にその商品とどう結びつけるのか、ですね。
質問の意味が分かる方、アドバイス宜しくお願い致します。
お礼
姉御、再度のレスを頂き、心から感謝します。 実は、 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>商品検索</title> </head> <body> <h1 style="background:#ccccff" >商品検索</h1> <form method="POST" action="Sample7.jsp"> 検索する商品ID: <input type="text" name="kensaku" size="15"/> <input type="submit" value="検索"/> </form> </body> </html> 予想されていたかもしれませんが、上記のHTMLファイルから番号を入力して検索します。 そうすると while(startWith==request.getParameter("kensaku")) { こんな感じになるのでしょうか。 どうなんだろう……他にもいろいろな方法がありましたよね。 やっぱり姉御は凄いですね。自分は足元にも及びません。 この後、 StringTokenizer(tmpStr, "\t"); でデータを取り出してout.printlnか<br>で縦に並べればいいんですかね。 でも、上のプログラムのどこを削除してどこに加えればいいのか、がさっぱりです。 1番最初からあった悩みの中枢部ですね。