0

私はプログラムの最後にいて、思わぬ障害にぶつかりました。私のプログラムは間違いなく数値ファイルを入力し、最小値を見つけることを知っています。私の思わぬ障害は、最高値の変数を書き出して while ループを実行し、print line ステートメントに値を割り当てる方法です。これが私のプログラムです。

import java.io.*;
import java.util.Scanner;


public class LargenSmalltest
{
public static void main(String[] args) throws IOException
{

    //Open the file
    File file = new File("Numbers.txt");
    Scanner inputFile = new Scanner(file);


    String filename;                                 
    double lowest = inputFile.nextDouble();  //lowest first number in list
    double highest = lowest;

    //Read all the values in Numbers file 
    while (inputFile.hasNext())
    {
        //Read second value from file
        double number = inputFile.nextDouble();

        //Read the numbers in the file and compare each value to find lowest value
        if (number < lowest) 
            //The lowest number in the list has now been stored as lowest
            lowest = number;
    }

    //Reread all the values in Numbers file 
    while (inputFile.hasNext())
    {
        //number equals the second value in your list
        double number = inputFile.nextDouble();

        if (number > highest)   
            highest = number;
    }

    //Close file
    inputFile.close();

    //Print out the lowest value in the list
    System.out.println("The lowest number in your file called, " +
      "Numbers.txt is "   +lowest+ ".");

    System.out.println("The highest number in your file is, " +highest+ ".");
}

}

4

2 に答える 2

2

@rgettmanに同意しました。また、スキャナはファイル全体を読み取っていますが、最初からやり直したり、元に戻したりすることはできません。ファイルをもう一度調べる場合は、新しいスキャナーを作成する必要があります。

于 2013-03-04T23:03:58.860 に答える
1

whileその 2 番目のループを持つ理由はありません。2 つのループでは、最初のループですべての値を使い果たし、2 番目のループには何も残っていません。

最低と最高のテストをnumber1 つのループで実行できます。

while (inputFile.hasNext())
{
   // Read second value from file
   double number = inputFile.nextDouble();

   // Read the numbers in the file and compare each value to find lowest value
   if (number < lowest) 
      //The lowest number in the list has now been stored as lowest
      lowest = number;

   // Find the highest value.
   if (number > highest)
      highest = number;
}
于 2013-03-04T22:57:59.990 に答える