尝试读取文件并将值放入数组中

时间:2015-09-05 22:18:03

标签: java arrays

我需要读取文件的某些部分并将它们放入正确的数组中。

public static void load(String fileName, String[] itemNumbers,
        String[] itemNames, double[] priceOfItem, int[] quantity) throws IOException{
    int i = 0;
    File inFile = new File(fileName);
    Scanner reader = new Scanner(inFile);
    while(reader.hasNext()){
        itemNumbers[i] = reader.next();
        itemNames[i] = reader.next();
        priceOfItem[i] = reader.nextDouble();
        quantity[i] = reader.nextInt();
        i++;
    }
    //This is just to see if it worked
        System.out.println(itemNumbers[i]);
        System.out.println(itemNames[i]);
        System.out.println(priceOfItem[i]);
        System.out.println(quantity[i]);    
}

以下是我正在阅读的文件。

E3233 CordlessDrill 129.99 12
W2321 WindowSealer 3.39 84

数组与文件部分按顺序排列。 当我运行这个时,我收到以下

null
null
0.0
0

2 个答案:

答案 0 :(得分:0)

确保说明 而(reader.hasNextLine())

答案 1 :(得分:0)

你尝试过使用FileReader吗?

public static void load(String fileName, String[] itemNumbers,
    String[] itemNames, double[] priceOfItem, int[] quantity) throws  IOException{
    File inFile = new File(fileName);

    char[] cbuf = new char[(int) inFile.length()];

    FileReader r = new FileReader(inFile);
    r.read(cbuf);
    String finalString = String.valueOf(cbuf);
    String[] lines = finalString.split("\n");

    itemNumbers = new String[lines.length];
    itemNames = new String[lines.length];
    priceOfItem = new double[lines.length];
    quantity = new int[lines.length];

    for(int i = 0; i < lines.length; i++){
        String line = lines[i].replace("\n", "");
        String[] values = line.split(" ");
        String itemNumber = values[0];
        String itemName = values[1];
        double price = Double.parseDouble(values[2]);
        int quant = Integer.parseInt(values[3].replace(String.valueOf((char)13), "").replace(" ", "").replace("\"", ""));
        itemNumbers[i] = itemNumber;
        itemNames[i] = itemName;
        priceOfItem[i] = price;
        quantity[i] = quant;
    }
    r.close();
        for(int i = 0; i < itemNames.length; i++){
            System.out.println(itemNumbers[i]);
            System.out.println(itemNames[i]);
            System.out.println(priceOfItem[i]);
            System.out.println(quantity[i]);
            System.out.println("\n");
        }
}

这个方法依赖于在文件中使用空格,为了安全起见,我会用逗号添加逗号和结束行,但是如果你保持相同的格式,这应该有效。