使用扫描程序

时间:2017-04-02 17:06:59

标签: java java.util.scanner

我在理解Java如何使用Scanner读取文件中的行时遇到了一些麻烦,并希望在经过数天的混乱之后得到一些澄清。

我有一个.txt文件,其中一行包含一个名称,然后是5个双打。我试图找出如何将每个转换为循环内的变量,以便我可以处理数据。我的目标是实际从这些行中获取数据并将它们作为参数传递给另一个方法进行验证,因此,如果有更简单的方法,那么我的所有耳朵都是如此。我觉得我无法找到一种方法来遍历nextLine中的每个东西,只是遍布整条线本身。我试图在不使用数组的情况下尝试这样做,这里是我现在的相关代码片段。

Scanner inputFile = new Scanner(file);

while (inputFile.hasNext())
    {
        String line = "";
        accumulator++;
        Scanner split = new Scanner(inputFile.nextLine());

       while (split.hasNext()) 
       {

       }



        stockName = inputFile.next();
        shares = inputFile.nextDouble();
        purchasePrice = inputFile.nextDouble();
        purchaseCommission = inputFile.nextDouble();
        salesPrice = inputFile.nextDouble();
        salesCommission = inputFile.nextDouble();

        System.out.println(stockName);
        System.out.println(shares);
        System.out.println(purchasePrice);
        System.out.println(purchaseCommission);
        System.out.println(salesPrice);
        System.out.println(salesCommission);


        System.out.print(line);
        System.out.println("");
        // checkValidity(line);
    }

我很难询问和阐明我不知道的事情,所以我非常感谢所有的帮助......我已经在这方面工作了三天而且我和我#39; m在一堵墙上。

编辑:

文本文件的布局如下所示

DELL: Dell Inc
125 25.567  0.025   28.735  0.025
MSFT: Microsoft
34.1    -15.75  0.012   15.90   0.013

1 个答案:

答案 0 :(得分:1)

你快到了。您只需删除该行:

while (split.hasNext()) 
{

}

这会消耗分配的所有元素。您需要将此内容分配给所有元素,例如stocksalesPrice等。

因此,外部while循环中的新片段是

    stockName = inputFile.nextLine();
    Scanner split = new Scanner(inputFile.nextLine());        

    shares = split.nextDouble();
    purchasePrice = split.nextDouble();
    purchaseCommission = split.nextDouble();
    salesPrice = split.nextDouble();
    salesCommission = split.nextDouble();

因为,你是逐行阅读,也要确保外部while循环看起来像:

while (inputFile.hasNextLine()) {

}