こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

初心者です:指定金額以上の商品だけを表示させるソースがどうしてもわかりません

プログラミング自体が初心者の者です。
ドスプロンプト画面を表示させ、指定した金額を入力してエンターおすと
指定した金額以上の商品情報だけを元データのCSVファイルから出力させたい内容です。
また、出力は
●二列目:品名
●三列目:概要
●四列目:単価
だけを表示させます。CSVには一行ごとにひとつの商品が記載されています。

以下まではできたのですがこのあとどう書いたらよいかわかりません。アドバイスいただけたら助かります。
金額欄はCSVの四列目にあるのですが、この四列目だけをStringからintに変換しないと金額の判定をJavaがわからないんだろうか?と思ったりしますがわかんなくなりました。プログラミングというものは何やら難儀です。。。

※catch(Exception e)は学習の主題ではないのでこのままで結構です。

■ファイル1:CSVprac.java
※Tabでインデントしても投稿の確認画面ではインデントが反映されないです。
 なんでかな。これではソースがみにくいだろうなぁ。。。投稿完了したらインデントが反映されていると信じて・・・
------------------------------------------------------
import java.io.*;

public class CSVprac
{
public static void main(String args[])
{
String [][] slist = new String [1000][5];
int kibougaku,pos;
int gyou; /* 配列の行の変数 */
gyou = 0;
int i;
String str;

try
{
BufferedReader in = new BufferedReader (new FileReader("syohin.txt"));

while((str = in.readLine()) != null)
{
pos = str.indexOf(',');
slist[gyou][0] = str.substring(0,pos);
str = str.substring(pos+1);

pos = str.indexOf(',');
slist[gyou][1] = str.substring(0,pos);
str = str.substring(pos+1);

pos = str.indexOf(',');
slist[gyou][2] = str.substring(0,pos);
str = str.substring(pos+1);

pos = str.indexOf(',');
slist[gyou][3] = str.substring(0,pos);
str = str.substring(pos+1);

slist[gyou][4] = str;

gyou++;
}
in.close();

BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
System.out.println("何円以上の商品を見ますか?(金額を数字のみで入力ください)");
i = Integer.parseInt(br.readLine());
//ここからがわからない。

System.out.println();
}

catch(Exception e)
{
System.out.println(e);
}
}
}
------------------------------------------------------



■ファイル2:syohin.txt
------------------------------------------------------
3,20型カラーテレビ,テレビ,17550,415
4,20型ステレオカラーテレビ,テレビ,23220,25
5,石油ファンヒーター,冷暖房器,14130,340
7,25型ステレオカラーテレビ,テレビ,34020,610
8,デスクトップパソコン,OA機器,115200,30
10,ノート型パソコン,OA機器,214200,60
12,BS内蔵25型カラーテレビ,テレビ,44820,500
13,230リットル2ドア冷蔵庫,家電,35820,820
14,250リットル3ドア冷蔵庫,家電,53820,540
15,350リットル3ドア冷蔵庫,家電,71820,810
16,377リットル4ドア冷蔵庫,家電,80820,300
17,BS内蔵29型カラーテレビ,テレビ,62820,450
18,サロンヒーター,冷暖房器,8082,5000
------------------------------------------------------

投稿日時 - 2009-12-16 18:55:56

QNo.5527223

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

こんにちは。

ここまで出来ているのでせっかくだからまずはヒントを。

1.レコード数分のループ(forとか)
2.1レコードの4番目をintに変換して入力された値と比較
3.2の条件が真になった場合にそのレコードの値を表示

こんな感じでしょうか。
配列の中を全てチェックしていけば、条件にあったレコードのみ表示できると思います。

投稿日時 - 2009-12-16 21:05:20

お礼

解決しました!
急を要していたのでわかる人に助言いただいて解決にいたりました。
ヒントをいただく方法では当方の初心者レベルでは間違いなく何度となくやりとりが重なることになるのは必須なので、回答者様に何度も返答していただくことになるし急がせることにもなることがわかっていたので書きこむことができませんでした。申し訳ありません。

レコードの四番目だけをintにするのがやはり必要だったのですね。
いったんStringに入れて、そのあとで for文の中でint化するんですね。
for文の中はユーザ入力した数値との比較をすれば良いのでわかりましたが。
せっかく書いていただきましたが対応できず申し訳ありませんでした。

投稿日時 - 2009-12-20 18:53:27

あなたにオススメの質問