0

課題でとても迷っており、助けが必要です! 基本的に、ユーザーが 12 か月間の 1 か月あたりの降水量 (インチ) を入力できるコードを作成することを想定しています。合計インチ、平均インチを計算し、さらに雨が最も多い月と最も少ない月を指摘します。合計インチと平均インチを管理しています。

ただし、雨が最も多く、最も少ないのは、私が問題を抱えている場所です。降水量の最大値と最小値を計算するコードの書き方は知っていますが、出力で実際の月を実際に表示する方法はわかりません。12 か月の配列に実際の数値をリストする必要があります。たとえば、7 か月目は 7 です。

私が抱えているもう1つの問題は、10進形式です。import ステートメントを一番上に置き、正しいコードだと思ったものを本文の正しい場所に入れましたが、平均を計算すると、それでも長い数字列が生成されます。つまり、12.1 を表示したい場合は 12.12121314141 です。

どんな助けでも大歓迎です。前もって感謝します!コードは次のとおりです。

import java.util.Scanner;
import java.text.DecimalFormat;

public class Rainfall
{
   public static void main (String [] args)
   {
      final int MONTHS = 12;
   double[] rainFall = new double[MONTHS];

   initRain(rainFall);

   DecimalFormat formatter = new DecimalFormat("##0.0");
   System.out.println("The total rainfall for this year is " +      

            totalRain(rainFall));
   System.out.println("The average rainfall for this year is " + 
            averageRain(rainFall));
   System.out.println("The month with the highest amount of rain is " +     
            highest);
   System.out.println("The month with the lowest amount of rain is " +  

            leastRain(rainFall));
        }

   /**
  totalRain method
  @return The total rain fall in the array.
   */

   public static double totalRain(double[] rainFall)
   {
      double total = 0.0;     // Accumulator

  // Accumulate the sum of the elements in the rain fall array
  for (int index = 0; index < rainFall.length; index++)
     //total += rainFall[index];
     total = total + rainFall[index];

  // Return the total.
      return total;
   }

   /**
  averageRain method 
  @return The average rain fall in the array.
   */

   public static double averageRain(double[] rainFall)
   {
      return totalRain(rainFall) / rainFall.length;
   }

   /**
  mostRain method
  @return The most rain in the rain fall array.
   */

   public static double mostRain(double[] rainFall)
   {
  double highest = rainFall[0];

  for (int index = 0; index < rainFall.length; index++)
  {
     if (rainFall[index] > highest)
        highest = rainFall[index];
  }

  return highest;
   }

   /**
  leastRain method
  @returns The least rain in rain fall array.
   */

   public static double leastRain(double[] rainFall)
   {
  double lowest = rainFall[0];

  for (int index = 0; index < rainFall.length; index++)
  {
     if (rainFall[index] < lowest)
        lowest = rainFall[index];
  }

  return lowest;
   }

      /**
  initRain method 
  @return The rain fall array filled with user input
   */
public static void initRain(double[] array)
{
      double input;  // To hold user input.
  Scanner scan = new Scanner(System.in);

      for (int index = 0; index < array.length; index++)
  {
    System.out.print("Enter rain fall for month " + (index + 1)     

            +": ");
    array[index] = scan.nextDouble();
      }
}
}
4

6 に答える 6

1

フォーマットの問題については、次のようにします。

System.out.println("The total rainfall for this year is " +      
formatter.format(totalRain(rainFall)));

すべての戻り値についても同様です。

私は月に関する問題を理解していません。もう少し説明していただけますか?

編集。わかりました。higuestRain、...値を割り当てるときのループ内の値はindex、検索している月になります。)

于 2013-05-10T11:53:46.390 に答える
0

降水量の最大値と最小値を計算するコードの書き方は知っていますが、出力で実際の月を実際に表示する方法がわかりません。

次のように、その月の最大降水量を返すのではなく、その月を返すことができます。

public static int mostRainMonth(double[] rainFall)
{
  double highest = rainFall[0];
  int month = index;
  for (int index = 0; index < rainFall.length; index++)
  {
    if (rainFall[index] > highest)
    {
       highest = rainFall[index];
       month = index;
    }
  }

  return month;
}

次に、このメソッドを次のように使用できます。

int highestRainMonth = mostRainMonth(rainfall);
System.out.println("The month with the highest amount of rain is " +     
        rainfall[highestRainMonth]+" in the month "+highestRainMonth);

私が抱えているもう1つの問題は、10進形式です。import 文を一番上に置き、正しいコードだと思ったものを本文の正しい場所に入れましたが、平均を計算すると、やはり長い数字列が生成されます。つまり、12.1 を表示したい場合は 12.12121314141 です。

オブジェクトを初期化したばかりですがDecimalFormatter、どこにも使用していません。setMaximumFractionDigitsこのメソッドは次のように使用できます。

DecimalFormat df = new DecimalFormat("##0.0");
System.out.println("The average rainfall for this year is " + 
        formatter.format(averageRain(rainFall)));
于 2013-05-10T13:23:13.410 に答える
0

DecimalFormat を定義しましたが、プログラムで使用したことはありません。試す

System.out.println("The average rainfall for this year is " + formatter.format(averageRain(rainFall)));

Format クラスはアプリケーションに対してグローバルではありません。フォーマット文字列で定義し、format を使用して Number を String にきれいに出力するか、解析して String を Number に変換します。

于 2013-05-10T11:53:35.877 に答える