读取FileInput; nextLine()不起作用

时间:2012-12-15 12:19:17

标签: java

这是我的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

其中第一个数字表示文件中描述了多少个woningen。 第一行显示了胜利发生的'toestand'(状态),可能是:(出售,出租等)。 第2行和第3行表示胜利的地址。 第4行表示胜利内的房间数量 最后一行表示胜利的价格。

现在我的问题是:

由于toestand,我无法让Java正确读取我的文件:“TE KOOP:” 我在readWoning中使用了String toestand = 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

提前致谢,

1 个答案:

答案 0 :(得分:0)

如果您使用:

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

然后toestand应该包含TE KOOP:read然后跳过下一行并开始在street查找3051JC。从sc.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