0

私はJavaを初めて使用し、ユーザーに数値のみを含むtxtファイルの名前を入力するように求めるプログラムを作成しようとしています。このプログラムは、ファイル内の数値の合計、平均、最大、および最小を出力します。 。私はほとんどのプログラムを作成しましたが、値の最大値と最小値を見つけようとして立ち往生しています。あなたが提供できるどんな情報も役に立ちます、そして私が十分に明確でなかったならば、私は詳しく説明することを試みることができます。これまでの私のコードは次のとおりです。

public class NumberFile{
    public static void main(String[] args){

      boolean goodName = false;
      int currentNumber, sum = 0, numberCount=0;
      Scanner numberFile = null;
      FileReader infile; 

      Scanner input = new Scanner(System.in);
      System.out.println("Please enter the name of the file you wish to import: ");
      String fileName = input.nextLine();



      while (!goodName){
        try{
          infile = new FileReader(fileName);
          numberFile = new Scanner(infile);
          goodName = true;
        }
        catch (IOException e){
          System.out.println("invalid file name, please enter another name");
          fileName = input.nextLine();
        }
      }
      while (numberFile.hasNextInt()){
        currentNumber = numberFile.nextInt();
        sum+=currentNumber;
        numberCount++;
      }
      System.out.println("The sum of the numbers is " +sum);

      System.out.println("The average of the numbers is " + ((double) sum)/numberCount);



    } // end main
} // end class
4

4 に答える 4

1

min と max の 2 つの変数を用意します (もちろん、min と max は最初は int.max にする必要があります) ヒント:

if(currentNumber < min)
{
  min= currentNumber;
}

if(currentNumber > max)
{
 max = currentNumber 
}

上記はファイル読み取りループにあります。

于 2012-10-14T18:30:15.817 に答える
1

"min" と "max" の 2 つの int 変数を宣言します。min を Integer.MAX_VALUE で初期化し、max を Integer.MIN_VALUE で初期化します。

次に、while ループ内で、これらの変数に対してすべての数値をチェックします。number が「min」より小さい場合は、新しい「min」値として割り当てます。「最大」より大きい場合は、新しい「最大」値として割り当てます。

これが明確になることを願っています。非常に単純なので、自分で実装できるようにコードを配置しませんでした。

于 2012-10-14T18:32:25.627 に答える
0
int min=Integer.MAX_VALUE;
int max=Integer.MIN_VALUE;
while (numberFile.hasNextInt()){
   currentNumber = numberFile.nextInt();
   sum+=currentNumber;
   numberCount++;

   if(min>currentNumber){
      min=currentNumber;
    }
   if(max<currentNumber){
      max=currentNumber;
    }
}

最小値を最大の int 値に宣言し、現在の最小値より小さい新しい値を読み取るたびに最小値を再割り当てします。同じことが最大値にも当てはまります。

于 2012-10-14T18:32:35.687 に答える