プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

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();
}
}
}
不審な点があればご指摘願います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ヒストグラムの作り方がわかりました。

あと、宜しければ、
for(int k=0;k<d.length;k++){
for(int i=0;i<6;i++){
if(Math.floor(d[k])==i){

について説明してもらえたらありがたいです。

お礼日時:2006/05/18 15:00

>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プログラムを基に
 しています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!