使用扫描仪将文本文件中的输入读入数组

时间:2014-03-05 20:16:54

标签: java arrays

我正在尝试使用scanner类读取文本文件中的输入并传入数组。我知道如何使用scanner类读取输入。我在这里遇到的唯一问题是我无法进入数组。

public class ReadItemData {

    public static void main(String[] args) throws Exception {

        Scanner aScanner = new Scanner(new FileReader(
                "src//chapter11//Items.txt"));

            while (aScanner.hasNext()) {
                String code = aScanner.next();
                String sku = aScanner.next();
                double qty = aScanner.nextDouble();

                System.out.println(code + " " + sku + " " + qty);

        }
    }

上面的代码没有数组概念。我想扩展相同的概念,将上述数据读入100的数组。任何建议都会有所帮助。我的最终目标是按代码sku

对数组中的输入进行排序

这就是我使用类似的界面进行排序的方法。我如何扩展这个数组的概念?

我使用这样的东西进行排序(没有数组概念)

   class Item implements Comparable {
    private int qty;
    private String sku,code;

    public Item(int qty, String sku,String code) {
        this.qty = qty;
        this.sku = sku;
        this.code = code;
    }

    public int getQty() {
        return qty;
    }

    public String getSku() {
        return sku;
    }
    public String getCode() {
            return code;
    }

    public int compareTo(Object o) {
        Item i = (Item) o;
        if (this.getQty() < i.getQty())
        {
            return -1;
        }
        if (this.getQty() > i.getQty())
        {
            return 1;

            }
        return 0;
    }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

    String[] array = new String[100];
    int currentIndex = 0;     
    while (aScanner.hasNext()) {
            String code = aScanner.next();
            String sku = aScanner.next();
            double qty = aScanner.nextDouble();

            array[currentIndex] = code;
            array[currentIndex++] = sku;
            array[currentIndex++] = ""+qty;
            currentIndex++;

    }

答案 1 :(得分:0)

如评论中所述,您可以使用100行和3列的2D数组,如下所示:

Object[][] array = new Object[100][3];
    int i=0,j=0;
    while (aScanner.hasNext()) {
         String code = aScanner.next();
         String sku = aScanner.next();
         double qty = aScanner.nextDouble();
         array[i][j++] = code; // array of row i and columns j 
         array[i][j++] = sku;
         array[i][j]   = qty;
         i++; // increment i since it's for rows
         j=0;//reset j because it's for columns

    }