こういうプログラムがあります。
<%@ 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箱1500012009/03/15
200WELSON36個370022009/03/20
300フリジストンXT81個1250022009/03/21
400120球プレッシャーボール1600002009/03/23
500ヨネッグススポンジボール101002009/03/25
問題のプログラムは最初の100、200、300、400、500という数字を入力すると、その商品の内容が縦書きで表示されるというモノです。
tmpStr = br.readLine();
で1行分取り出して、
tkn = new StringTokenizer(tmpStr, "\t");
でタブで区切って表示させるプログラムなのでどうにかなるようにも思えるのですが……。
1番難しいと思うのは検索番号を入力した際にその商品とどう結びつけるのか、ですね。
質問の意味が分かる方、アドバイス宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
> 200で読み込みを終了するのは
> 100のデータも読み込んでますよね
当然読みこむわよ。
でも破棄すればいいじゃない。
具体的に言うと変数の上書きね。
> 接頭語
100とか200とか入力した数字でしょ?
> 他に比較する方法
splitやStringTokenizerで配列にしてequalsするなり
indexOfするなり数値に変換して==するなり何でもできると思うけど。
人間ならどういう比較をするか
を考えるとわかりやすいわよ。
あとはそれを実現するAPIがあるかないか
それだけのこと。
> 縦書き
\tで分解した後
ループでまわして
printlnするだけよ。
ちなみに一つのテクニックとして
\tを\nに置換した方が楽だと思わない?
もっとも課題に沿っている回答かどうかは分からないけど。
姉御、再度のレスを頂き、心から感謝します。
実は、
<!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番最初からあった悩みの中枢部ですね。
No.1
- 回答日時:
たとえば200って入力されていたら
ファイルを1行ずつ読みこむ時に
200のデータが来た段階で読み込みを終了すればいいんじゃない?
比較する方法はたくさんあるけど
今回の場合はstartWithが楽だとお思うわよ。
姉御、お久しぶりです。
アドバイスありがとうございます。
200で読み込みを終了するのは
100のデータも読み込んでますよね。
そうすると、2つのデータが表示されませんかね。
startWithを使用した場合、接頭語がどの部分に当たるのですか。
他に比較する方法があれば、是非とも教えて頂きたいのですが。
どうも質問ばかりで、すいませんです。
後、縦書きではなくて、縦一列と言ったほうがいいみたいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csv出力について
-
yyyymmddからyyyy/mm/d...
-
テキストファイルにおいて任意...
-
InputStream.read()でタイムア...
-
equalsの逆
-
Class.forNameでエラーになる
-
グローバルな(?)IPアドレスの...
-
FileクラスのcanRead/canWrite...
-
Javaでデータに登録する度にID...
-
BufferedReaderでのエラー
-
以下のJAVAプログラムでご質問...
-
java連結
-
パソコンキーボードで時分秒を...
-
ORA-01858: 数値を指定する箇所...
-
C言語のポインターに関する警告
-
VBAで配列の計算
-
System.err. printlnとSystem.o...
-
IF関数でEmpty値を設定する方法。
-
javaで質問です。 文字列2023/2...
-
配列にnullを代入すると、null...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
equalsの逆
-
InputStream.read()でタイムア...
-
九九を横に表示する。
-
BufferedReaderでのエラー
-
javaでCSVの中身から最大値を表...
-
テキストファイルから空白行をよむ
-
java連結
-
Javaの質問です。テキストファ...
-
Servletでテキストボックスに入...
-
javaのファイル読み込み時の文...
-
[JAVA]エラーが解決できません。
-
テキストファイルの任意の文字...
-
以下のJAVAプログラムでご質問...
-
javaのfor文が機能してないみた...
-
テキストファイルのアップロード
-
Javaでデータに登録する度にID...
-
Java int sum = 0は必要ですか?
-
ソケットを使ったサーバとクラ...
おすすめ情報