2017-01-05 4 views
3

私は多分誰でも私を助けることができる小さな問題があります。私はランダム要素の配列を持っている、平均を数え、ユーザーから番号をスキャンします。 私はユーザーからスキャンした数よりも少ない平均よりも配列の要素の配列を探しています。配列の要素は平均と異なり、数値よりも小さい

public static double average(int[][] array){ 
    double average = 0; 
    int sum = 0; 
    for(int i = 0; i < array.length; i++){ 
     for(int j = 0; j < array.length; j++){ 
      sum += array[i][j]; 
     } 
    } 
    average = (double) sum/array.length; 
    return average; 
} 

public static void main(String[] args) { 
    Random rnd = new Random(); 
    Scanner scan = new Scanner(System.in); 

    int[][] array = new int[4][4]; 
    for(int i = 0; i < array.length; i++){ 
     for(int j = 0; j < array.length; j++){ 
      array[i][j] = rnd.nextInt(10); 
     } 
    } 

    int a = scan.nextInt(); 
    average(array); 
    int elements = 0; 
    for(int i = 0; i < array.length; i++){ 
    for(int j = 0; j < array.length; j++){ 
     if(array[i][j]) { 
      // ?? need help here 
     } 
    } 
} 
+1

「??」で直面している問題は何ですか? –

答えて

2
ここ

average(array); 

あなたの平均メソッドを呼び出している...しかし、あなたはその結果を使用していないをしています!

double averageForArray = average(array); 

後でのような、その値に対するを比較することを可能にする: "擬似コード" レベルである

  • 上記;

    int deltaGivenByUser = scan.nextInt(); 
    
    for(int i = 0; i < array.length; i++){ 
        for(int j = 0; j < array.length; j++){ 
        if(Math.abs(array[i][j] - average) >= deltaGivenByUser) { 
         ... 
    

    ノート私はコンパイラで実行しませんでした。微妙なバグや誤字に注意してください。私のコードは、のアイデアを行う方法です。それは "コピー/ペースト/解決"のためのものではありません。

  • という名前をご覧ください。 "a"のような変数名は、何も言わないです。私の名前deltaGivenByUserはおそらく完璧ではありませんが、少なくともそれはの一部にの変数が使用されることを示しています。
  • 次に、スキャナの操作方法を詳しく見てください。例えば、hasNextInt()方法を使用することによって達成される。今では、ユーザーが数字でないものを提供したときにあなたのコードは失敗します
  • 別々のもの:あなたはその平均を計算するための素晴らしい方法を持っています。ユーザーが提供する値を受け取る別のメソッドを作成することもできます。 mainメソッド
1

これは外のその処理を実行することは危険である:両方のループの外側の配列のサイズを使用している

for(int i = 0; i < array.length; i++){ 
    for(int j = 0; j < array.length; j++){ 
    sum += array[i][j]; 
} 

。サブアレイの実際のサイズを使用することをお勧めします。

for(int i = 0; i < array.length; i++) { 
     int[] subArray = array[i]; 
     for(int j = 0; j < subArray.length; j++){ 
     sum += subArray[j]; 
} 
関連する問題