0

私はこのような在宅勤務の問題を抱えています:

次のデータは、地震のマグニチュードデータを表しています。有効な地震データの平均を計算して印刷するプログラムを作成します。

Richter値をquakeLevelsという名前のdoubleの配列に格納します。

残念ながら、地震計は信頼できない測定値を生成することがあります(この例の10.1の値のように)。したがって、最大値と最小値を破棄することにします。

プログラムは次のことを行う必要があります。

  • 次のデータを使用して、quakeLevels配列を宣言して初期化します。{5.6、6.2、4.0、5.5、5.7、6.1、7.4、8.5、5.5、6.3、6.4、2.1、6.9、4.3、3.1、7.0、10.1}
  • 配列の最大値と最小値を決定します。
  • 最大値と最小値を除いて、配列の内容の平均を計算します。
  • 最大値と最小値を除いた配列の値を出力します。
  • 平均を印刷します。

以下のコードを完成させてください。

次のコードでこの問題を試しましたが、新しい配列のnull値を取得しています。

public class QuakeLevels {


    public static void main(String[] args) {



        Double quakeLevels[] = { 5.6, 6.2, 4.0, 5.5, 5.7, 6.1,7.4, 8.5, 5.5, 6.3, 6.4, 2.1, 6.9, 4.3, 3.1, 7.0, 10.1 };
        Double minQuakeLevel = Double.MAX_VALUE;
        Double maxQuakeLevel = Double.MIN_VALUE;
        double totalQuakeLevels =0.0;
        double avgQuakeLevels =0.0;
        Double[] newQuakeLevels = new Double[(quakeLevels.length-2)]; //array excluding min and max value from the original
        for(int i=0;i<quakeLevels.length;i++){
              totalQuakeLevels+=quakeLevels[i];
          if(quakeLevels[i]<minQuakeLevel) {
                minQuakeLevel=quakeLevels[i];
          }
          if(quakeLevels[i]>maxQuakeLevel){
                maxQuakeLevel =quakeLevels[i];
            }


        }



         avgQuakeLevels = ((double)totalQuakeLevels-(minQuakeLevel+maxQuakeLevel))/(quakeLevels.length-2); // Excluding min and max Quake Levels to calculate average
         System.out.printf("%s%.1f\n","Average Quake Level= ",avgQuakeLevels); 
         System.out.print("The new quake level:");
         for(int i=0;i<quakeLevels.length-2;i++){

          if(newQuakeLevels[i]!=minQuakeLevel && newQuakeLevels[i]!=maxQuakeLevel){
              quakeLevels[i]=newQuakeLevels[i];


         System.out.printf("%6s",newQuakeLevels[i]);
           }

         }
          System.out.println("");
        }
    }
4

1 に答える 1

0

間違った配列を設定していると思います。元の配列を上書きしていますが、新しい配列は作成していません。

これを試して:

それ以外の

if(newQuakeLevels[i]!=minQuakeLevel && newQuakeLevels[i]!=maxQuakeLevel){
      quakeLevels[i]=newQuakeLevels[i];

これを入れて

if(quakeLevels[i]!=minQuakeLevel && quakeLevels[i]!=maxQuakeLevel){
      newQuakeLevels[i]=quakeLevels[i];
于 2012-12-24T08:24:51.170 に答える