• 締切済み

javaに関する質問

IT関係のスクールに通っていて、javaの勉強をしている人間です。javaに関して、ご質問があります。授業で課題を出されたのですが、どうしても行き詰っています。 問題は次のような内容です。 ・店別売上高表の作成 店番号と売上高を入力して、店ごとの売上を表示する表を作成するプログラムを作りましょう。 条件;(1)店番号は1~8までとしてください。 (2)入力処理は繰り返しできるようにしてください。 (3)売上1,000,000分に対して、*(アスタリスク)を1個表示させるようにしてください。 (4)表示する*が60個以上の場合は、60個だけ表示するようにしてください。 (5)全店舗の合計売上高も表示するようにしてください。 上の5つの条件を満たして下記の実行画面が表示させるようにします。 --------------------------------------------------------------- 店番号を入力してください(1~8) 2 売上高を入力してください(<99999999) 22222222 入力を続けますか yes...1,no...other number 1 店番号を入力してください(1~8) 5 売上高を入力してください(<99999999) 55555555 入力を続けますか yes...1,no...other number 2            店別売上高表         ---+---+---+---+---+---+---+---+---+---+---+---+ 1号店 0 2号店 22222222 ********************** 3号店 0 4号店 0 5号店 55555555 *************************************** 6号店 0 7号店 0 8号店 0 売上  77777777 -------------------------------------------------------------- という問題です。途中までの僕のやり方は import java.io.*; class A { public static void main(String args[])throws IOException{ BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("店番号を入力してください(1~8)"); String str1=br.readLine(); int num; if(num>=1 && num<=8) num=Integer.parseInt(str1); } System.out.println("売上高を入力してください (<99999999)"); String str2=br.readLine(); if(uriage<99999999) uriage=Integer.parseInt(str2); } System.out.println("入力を続けますかyes...1,no...other number"); flag=Integer.parseInt(br.readLine()); }while(flag==1); System.out.println(" 店別売上高表 "); System.out.println("--+---+---+---+---+---+---+---"); for(int i=0;i<8;i++){ System.out.println((i+1)+"号店"); }}} do~while文が終わった後、店番号の右に売上高とアスタリスクを表示させるためには、どうしたらいいのでしょうか?どなたか、もしよろしければ教えていただけないでしょうか?よろしくお願いします。

みんなの回答

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>店番号の右に入力した売上高を表示させるためにはどうしたらいいのでしょうか? うむ。表示させるには、店番号と売上高を紐づける「器」が必要ですね。 class Sale { private:  int store_code_;  int amount_; public:  ~ } のような。複数の売上げを管理しなければならない場合は、それを配列にして Vector<Sale> としよう。 do ~ while でのユーザからの入力をこのような器にためておけば、あとはそれを好きなように出力するだけ。

kepo2007
質問者

お礼

たびたび、ありがとうございます。もうちょっとで解けるところまで、いきました。もう1個だけわかりません。条件(4)の「表示する*が60個以上の場合は、60個だけ表示するようにしてください。」のところは int a=uriagedaka[]/1000000; if(a>60){ System.out.println(""); } 入力した売上高を1,000,000で割った整数部分が60以上の場合if文を使って、その後何かを出力するらしいのですが、System.out.println("");の("")の中に入るものはなんなのでしょうか?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

まずは投稿するカテゴリーを見直しましょう。 適当なアドバイスを書けば、機能分割して考えるのが普通です。 つまり、「売上高を計算する機能」やら「売上高を * の配列に置き換える機能」やら「きれいに出力を整える機能」を別々に作って、main に組込みましょう。

kepo2007
質問者

お礼

koko_u_さん ありがとうございました。もうちょっと自分で考えてみます。

kepo2007
質問者

補足

やっぱりわかりません。do~while文が終了した後、店番号の右に入力した売上高を表示させるためにはどうしたらいいのでしょうか?

関連するQ&A