如何扫描非原始类型的对象?

时间:2012-11-13 21:01:01

标签: java java.util.scanner

我正在开发一个项目,我需要从“Itinerary”类型的文件中扫描一个值,但我不知道该怎么做。这是我的代码:

    switch (idChar) {

           case 'B':
              flightNumIn = scanFile.next();
              tripDataIn = scanFile.next();
              baseFareIn = scanFile.nextDouble();
              fareAdjustmentFactorIn = scanFile.nextDouble();
              foodBeveragesIn = scanFile.nextDouble();
              entertainmentIn = scanFile.nextDouble();

              Business bTicket1 = new Business(flightNumIn, tripDataIn, 
                 baseFareIn, fareAdjustmentFactorIn, foodBeveragesIn, 
                 entertainmentIn);

              break;

实际错误:

    AirTicketProcessor.java:43: error: incompatible types
              tripDataIn = scanFile.next();
                                        ^
    required: Itinerary
    found:    String

3 个答案:

答案 0 :(得分:0)

scanFile.next()返回一个String,而不是一个行程。试试System.out.println(scanFile.next());弄清楚它是什么。

答案 1 :(得分:0)

Scanner.next()读取String,但您可以将与“已扫描”类型匹配的构造函数添加到Itinerary类:

class Itinerary {
   public Itinerary(String str, int intValue, ...) {
     ...
  }
}

并像这样创建:

tripDataIn = new Itinerary(scanFile.next(), scanFile.nextInt(), ...);

答案 2 :(得分:0)

好的,你要做的是称为对象序列化。您需要启动here。这是一个关于如何设置可序列化类的精彩教程。您基本上需要创建一个名为Itinerary的类来实现Serializable。您将使用FileIO导入和导出该类型的文件。可以找到关于写出(和加载)的教程here。您的代码不起作用的原因是Scanner正在尝试扫描String类型的对象。