3

私が書いている "Flight" というプログラムについての別の質問です。私のテスターでは、myFlight という Flight クラスからオブジェクトを作成しています。オブジェクトにはいくつかのフィールド (フライト名、走行距離など) がありますが、私が行っているのは、input.txt というファイルからデータを読み取り、それを作成したオブジェクトに入れようとしていることです。私が読んでいるファイルには 5 行の情報があります。何らかの理由で、私はそれを正しく理解できません。誰かがこの問題を解決するのを手伝ってくれるなら、私はそれを大いに感謝します.

以下は、Flight クラスのすべてのフィールドを持つコンストラクターです。

 public Flight(String name, int num, int miles, String origin, String destination)
  {
    Airlinename = name;
    flightnumber = num;
    numofmiles = miles;
    Origincity = origin;
    Destinationcity = destination;
  }

そして、オブジェクトを作成し、ファイルからデータを読み取ろうとするプログラムの部分。オブジェクトを作成したときにオブジェクトに何かを配置する必要があるかどうかわからなかったため、クラスにも空のコンストラクターを作成しました。

Flight myFlight = new Flight();

    File myFile = new File("input.txt");
    Scanner inputFile = new Scanner(myFile);

    while (inputFile.hasNext())
    {
      myFlight = inputFile.nextLine();
    }

    inputFile.close();
  }
}
4

4 に答える 4

1

特殊文字を使用する場合に備えて、正しく読めるようにプログラムを変更する必要があります。

Scanner inputFile = new Scanner(myFile, "UTF-8");

一方、テキスト ファイルに次の内容が含まれている場合、その後の呼び出しnextInt()で実行時例外が生成される可能性があります。

Gran España
1
1001
New York
Los Angeles

だとしたら読み方が違うはずです。

myFlight = new Flight(inputFile.nextLine(), 
           Integer.parseInt(inputFile.nextLine()), 
           Integer.parseInt(inputFile.nextLine()), 
           inputFile.nextLine(), 
           inputFile.nextLine());

他のプログラムと同様に、モデルを改善するために条件を追加すると、より多くのコードが必要になります。

幸運を。

于 2012-05-07T23:41:57.083 に答える
0

入力テキストはどのように構成されていますか? Scanner のnextLine()メソッドは String オブジェクトを返していますが、それを Flight 型に割り当てることはできません。のように、スキャナーでさまざまな値を取得するさまざまな方法がありますnextInt(), nextFloat()

基本的には、このように試すことができます

Flight myFlight = new Flight();
myFlight.setFlightName(inputFile.next());
myflight.setMiles(inputFile.nextInt();

これは単なるサンプルです。input.txt ファイルの形式を確認する必要があります。

于 2012-05-07T23:20:19.943 に答える
0

文字列行をオブジェクトに直接割り当てることはできません。行を部分に解析し、値を変数に 1 つずつ割り当てる必要があります。

于 2012-05-07T23:17:37.993 に答える