100個のデータがテキストで用意されていて、そのデータからビン幅5ずつで155から190までのヒストグラムを作成したいです。そのときのヒストグラムは*で表したいです。
回答よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
こんな感じでしょうか。あまりコードの綺麗さにこだわりなく書いたのでご了承ください。
データファイルHistogram.txtを読み込むようにしています。
java
1import java.io.BufferedReader; 2import java.io.File; 3import java.io.FileNotFoundException; 4import java.io.FileReader; 5import java.io.IOException; 6 7public class Histogram { 8 public static void main(String[] args){ 9 int min = 155; 10 int max = 190; 11 int bin = 5; 12 int[] n = new int[(max-min)/bin]; 13 int[] d = new int[100]; 14 15 int i; 16 17 try{ 18 File file = new File("Histogram.txt"); 19 20 BufferedReader br = new BufferedReader(new FileReader(file)); 21 22 String str= null; 23 i = 0; 24 System.out.println("==========入力情報=========="); 25 while((str = br.readLine()) != null){ 26 d[i]=Integer.parseInt(str); 27 System.out.print(d[i]+" "); 28 29 i = i +1; 30 } 31 32 br.close(); 33 34 }catch(FileNotFoundException e){ 35 System.out.println(e); 36 }catch(IOException e){ 37 System.out.println(e); 38 } 39 for(int l=0;l<d.length;l++){ 40 for(int j=min;j<max;j=j+bin){ 41 if(d[l]>=j && d[l]<j+bin){ 42 n[(j-min)/bin]=n[(j-min)/bin]+1; 43 } 44 } 45 } 46 System.out.println(); 47 System.out.println("==========出力結果=========="); 48 49 50 for(int k=0;k<n.length;k++){ 51 if(k==0){ 52 System.out.print(min+"-"); 53 }else{ 54 System.out.print(" -"); 55 } 56 System.out.print(min+((k+1)*bin) + "|"); 57 for(int j=0;j<n[k];j++){ 58 System.out.print("*"); 59 } 60 System.out.println(); 61 } 62 } 63}
実行結果
>java Histogram ==========入力情報========== 167 140 161 142 110 173 159 103 113 115 150 117 114 182 130 165 158 127 168 131 174 160 103 100 125 133 183 171 185 123 161 180 166 197 170 118 186 137 142 195 166 125 158 138 162 166 149 158 110 105 146 102 171 173 152 157 158 163 136 131 179 109 157 167 124 128 120 165 154 199 187 121 150 108 198 158 181 162 144 140 112 169 157 130 124 158 172 124 200 164 137 115 197 155 144 178 158 149 192 163 ==========出力結果========== 155-160|************ -165|******** -170|********* -175|******* -180|** -185|**** -190|***
投稿2017/11/22 05:51
編集2017/11/22 05:54総合スコア207
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/22 06:29