2

これは私のportefeuilleであり、すべての読み取り値「woningen」が含まれている必要があります

//read file
  public static Portefeuille read(String infile) {
    Portefeuille result = new Portefeuille();
    FileReader fileString;

    try{
       fileString = new FileReader(infile);
       Scanner sc = new Scanner(fileString);

       int amount = sc.nextInt();
       for(int i = 0; i < amount; i++)
          result.voegToe(readWoning.read(sc));
       }
       catch(FileNotFoundException e) {
         e.printStackTrace();
       }
       return result;
  }

これは、次のようなreadWoning.read(sc)を使用します。

public class readWoning {
    public static Woning read(Scanner ac) {
        String toestand = ac.next();
        Adres adres = Adres.read(ac);
        int kamers = ac.nextInt();

        ac.next(); String aard = ac.next();

        int price = ac.nextInt();
        System.out.println(toestand + " " + adres + " " + kamers + " " + price);
        if("huurprijs".equals(aard)) {
          return new HuurWoning(adres,kamers,price,toestand);
        }
        return new KoopWoning(adres,kamers,price,toestand);
      }
}

これはAdres.read(ac);を使用します。これは:

public static Adres read(Scanner sc) {
        sc.nextLine();
        String street = sc.next();
        String number = sc.next();
        String code = sc.next();
        String place = sc.next();
        return new Adres(street, number, code, place);
    }

読み込みたいファイルは次のとおりです。

3
TE KOOP:
Emmalaan 23
3051JC Rotterdam
7 kamers
vraagprijs 300000
VERKOCHT:
Emmalaan 25
3051JC Rotterdam
5 kamers
koopprijs 280000
TE HUUR:
Javastraat 88
4078KB Eindhoven
3 kamers
huurprijs 500

最初の数字は、ファイルに記述されているウィニングの数を示しています。最初の行は、勝ちが発生する「toestand」(状態)を示しています。これは、(販売、賃貸など)である可能性があります。2行目と3行目は、賞金の住所を示しています。4行目は、ウィニング内の部屋の数を示します。最後の行は、ウィニングの価格を示します。

今私の問題は:

toestandが原因でJavaにファイルを正しく読み取らせることができません: "TE KOOP:"readWoningでStringtoestand = ac.nextLine()を使用しましたが、String toestand = ac.next();の間に一部のスペースしか出力しません。「TE」のみを出力します私の質問がどういうわけか十分に具体的でない場合は、教えてください。

私が得る出力:

TE Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE Javastraat 88, 4078KB Eindhoven 3 500
null
null
null

私が欲しい出力:

TE KOOP: Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE HUUR: Javastraat 88, 4078KB Eindhoven 3 500

前もって感謝します、

4

1 に答える 1

0

使用する場合:

ac.nextLine();
String toestand = ac.nextLine();

次に、toestandには。が含まれている必要がありますTE KOOP:read次に、次の行をスキップして、を探し始めstreetます3051JCsc.nextLine();から削除read

public static Adres read(Scanner sc) {
    String street = sc.next();
    String number = sc.next();
    String code = sc.next();
    String place = sc.next();
    return new Adres(street, number, code, place);
}

そして、あなたは得るべきです:

TE KOOP: Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE HUUR: Javastraat 88, 4078KB Eindhoven 3 500
于 2012-12-15T12:39:38.193 に答える