2011-10-19 10 views
0

javaを開発し、ユーザに何かintegersを入力して、それらの最大値と最小値、平均値を求めるプログラムを開発する必要があります。そして、ユーザが指定しサブ間隔の数にアレイのセットを分割し、それは各サブインターバル幅の長さを有する境界点..java:配列の整数の周波数を調べる

問題は、私が必要ということですを生成します

例::インターバル:

14.5から16.5

周波数: 1(ここでは、それはショーがどのように多くの整数この境界に属している必要があります)

周波数を作成します

間隔:

16.5から18.5

頻度:4など。ここで

import java.util.Scanner; 
public class Sta 
{ 
    public static void main(final String args[]) 
    { 
     final Scanner input = new Scanner(System.in); 

     int num=0; 
     int range=0; 
     int subnum; 
     int subwid; 

     System.out.print("How many numbers do you want to enter: "); 
     num=input.nextInt(); 

     final int array[]=new int[num]; 

     System.out.print("Enter the numbers now: "); 
     for(int i=0; i<array.length; i++) 
     { 
      array[i]=input.nextInt(); 
     } 

     System.out.print("These are the numbers you entered:\n"); 
     printArray(array); 

     int smallest=array[0]; 
     int largest=array[0]; 

     for (final int element : array) { 
      if(element>largest) { 
       largest=element; 
      } else if(element<smallest) { 
       smallest=element; 
      } 
      range=largest-smallest; 
     } 
     System.out.printf("Largest is %d\n",largest); 
     System.out.printf("Smallest is %d\n",smallest); 
     System.out.printf("Range is %d\n",range); 

     System.out.print("Enter the number of subinterval: "); 
     subnum=input.nextInt(); 

     subwid=range/subnum; 
     System.out.printf("The width of subinterval is %d\n", subwid); 

     /* this part should find the boundaries and find the elements that fall between 
      the each two boundaries */ 
     for(double boundary=smallest-.5; boundary <=largest+.5; boundary +=subwid) 
     { 
     System.out.printf("Boundaries are %.1f\n",boundary); 

     for(int element=0; element<array.length; element++) 
      { 
      if(element>=boundary) 
       { 
      System.out.printf("f=%d\n",element); 
       } 
      } 
     } 
    } 

    public static void printArray(final int arr[]) 
    { 

     for (final int element : arr) { 
      System.out.print(element + "\n"); 
     } 
    } 

} 

質問は、私は上記の表の例のように周波数を見つけるのですか..です私はこれまでのところ、ほとんどの各境界の周波数を見つけることを除いて行っているコードです??

+0

インデントされていないコードは読み取れません。私はあなたのためにそれをインデントしました。 –

+2

だからあなたを混乱させる? –

+0

Sean ..ありがとうございます。 –

答えて

2

はここにいくつかのオプションがあります:

  • ネストされたループ:各範囲について、その範囲内にある数字の数を数えます。
  • 'new int [subnum]' 1回のパスで、各範囲の項目数を数えます。除算と切り捨てを使用することを検討してください。
  • 数値を並べ替えます。各境界の前に何個発生するかを数えます。
+0

あなたは私のためにループを書いてください、私はそれをたくさん試しましたし、動作しませんでした.. –

+3

@AishaS:それは動作しません。あなたの投稿を編集して、あなたの最高の試みを示して、それがうまくいかない方法を教えてください。 –

+0

コードを編集しました。助けてください –