• ベストアンサー

ヒストグラム

与えられたデータのヒストグラムを作るプログラムの作り方がわかりません。わかる人お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

GUIは苦手なのでCUI DOS画面上での表現での一例です。 public class HistGram { public static void main(String[] args){ int[] n=new int[6]; double[] d={0.5,1.0,1.1,2.0,2.1,3.0,3.1,3.1,4.0,4.1,4.2,4.3,4.4,5.0 }; for(int k=0;k<d.length;k++){ for(int i=0;i<6;i++){ if(Math.floor(d[k])==i){ n[i]=n[i]+1; } } } System.out.println("=====ヒストグラム====="); for(int j=0;j<6;j++){ System.out.print(j + "to" + (j+1) + "|"); for(int i=0;i<n[j];i++){ System.out.print("*"); } System.out.println(); } } } 不審な点があればご指摘願います。

takashiino
質問者

お礼

ありがとうございます。 ヒストグラムの作り方がわかりました。 あと、宜しければ、 for(int k=0;k<d.length;k++){ for(int i=0;i<6;i++){ if(Math.floor(d[k])==i){ について説明してもらえたらありがたいです。

その他の回答 (1)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

>for(int k=0;k<d.length;k++){  データがd[]に配列にありますのでそのデータを呼ぶ。 >for(int i=0;i<6;i++){  今回のデータは0~5の数字なので0から0.9 1から1.9  のように6段階に分けています。  もっと細かく分けたいときはreadLine()などで分け る数を入力されるようにすると良いです。 >if(Math.floor(d[k])==i){  本当はif(d[k]>=0+i && d[k]<1+i){のようにしたかったのですがうまくいかなかったのでこうなった。  データが例えば100から120だったらやはりreadLine()から読みこんでiでは無くて異なる変数を使用した ほうが良い。  いずれにしましてもヒストグラム度数分布表の  特性をよく把握したほうが良いと思います。  今回の例は以前外注したBASICプログラムを基に  しています。

関連するQ&A