• 締切済み

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

プログラミング自体が初心者の者です。 ドスプロンプト画面を表示させ、指定した金額を入力してエンターおすと 指定した金額以上の商品情報だけを元データの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 ------------------------------------------------------

みんなの回答

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 ここまで出来ているのでせっかくだからまずはヒントを。 1.レコード数分のループ(forとか) 2.1レコードの4番目をintに変換して入力された値と比較 3.2の条件が真になった場合にそのレコードの値を表示 こんな感じでしょうか。 配列の中を全てチェックしていけば、条件にあったレコードのみ表示できると思います。

touchy
質問者

お礼

解決しました! 急を要していたのでわかる人に助言いただいて解決にいたりました。 ヒントをいただく方法では当方の初心者レベルでは間違いなく何度となくやりとりが重なることになるのは必須なので、回答者様に何度も返答していただくことになるし急がせることにもなることがわかっていたので書きこむことができませんでした。申し訳ありません。 レコードの四番目だけをintにするのがやはり必要だったのですね。 いったんStringに入れて、そのあとで for文の中でint化するんですね。 for文の中はユーザ入力した数値との比較をすれば良いのでわかりましたが。 せっかく書いていただきましたが対応できず申し訳ありませんでした。

関連するQ&A