为什么我的扫描仪没有传递文件中的文本,而是文件名?

时间:2014-12-01 03:39:12

标签: java text

我的System.out.println(info); line返回“Model_X_Sale_2014.txt”而不是文件中的信息。第一行是:“Jan 3128 1.59 3421 1.79”我是分拆字符串的新手,但是在字符串均匀分割之前出现了这个问题。

知道可能导致这种情况的原因吗?非常感谢时间。另外,有一个特殊的原因Eclipse不会让我使用try catch来处理文件吗?

    public static void main(String[] args) {
            Scanner keyboard = new Scanner(System.in);
            System.out.println("What year would you like to review?");
            int year = Integer.parseInt(keyboard.nextLine());
            String fileName= "Model_X_Sale_" + year + ".txt";

                Scanner scanner = new Scanner(fileName);
                   while (scanner.hasNextLine()) {
                       String line = scanner.nextLine();//read one line at a time
                       MonthlySale_Baumbach input = new MonthlySale_Baumbach(line);
                       System.out.printf("\n%s %15.2f %s15.2f", input.getMonth(), input.getProfitX310(), input.getProfitX410());
                   }
                   scanner.close();
}

public class MonthlySale_Baumbach {
//variables
String month;
int X310_Units, X410_Units;
double X310_uPrice, X410_uPrice;


public MonthlySale_Baumbach(){}
public MonthlySale_Baumbach(String info){

System.out.println(info);
    String[] st = info.split("\\s");

            month = st[0];
            X310_Units = Integer.parseInt(st[1]);
            X310_uPrice = Double.parseDouble(st[2]);
            X410_Units = Integer.parseInt(st[3]);
            X410_uPrice = Double.parseDouble(st[4]);



    }//end of constructor
}

1 个答案:

答案 0 :(得分:2)

首先阅读Scanner(String)

的文档
  

public Scanner(String source)

构造一个新的扫描仪   生成从指定字符串扫描的值。

  参数:
source - 要扫描的字符串

您可能想要的是Scanner(File)

  

public Scanner(File source) throws FileNotFoundException

  构造一个新的扫描仪,生成从中扫描的值   指定的文件。文件中的字节将转换为字符   使用底层平台的默认字符集。   

参数:
source - 要扫描的文件

  抛出:
FileNotFoundException - 如果找不到来源