如何通过调用此方法初始化此数组?

时间:2013-11-17 01:16:52

标签: java arrays

由于某种原因我无法弄清楚如何将变量的最后两种方法调用到最上面。当我做initalizeString(String [] names);我总是得到.class预期。在调用方法时,我不太确定我在做错了什么。

import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class SoftDrinkInventory {

    static final int MAXSIZE = 100;      // maximum size of 100
    private String[] names;             // softdrink names
    private String[] ids;               // softdrink identifications
    private int[] startingInventory;    // starting inventory of the softdrinks
    private int[] finalInventory;       // final inventory of the softdrinks
    private int[] transactionCounts;    // number of transactions per softdrink
    private int trueSize;               // total number of softdrinks

    public SoftDrinkInventory() {

      // call initalizeString for names/ids
      // call initializeInt for inventory/transaction counts

    }

    private void initializeInt(int[] a) {

        a = new int[MAXSIZE];

        for(int i = 0; i <= MAXSIZE; i++) {
            a[i] = 0;
        }

    }

    private void initializeString(String[] s) {

        s = new String[MAXSIZE];

        for(int i = 0; i <= MAXSIZE; i++) {
            s[i] = "";
        }

    }

}

2 个答案:

答案 0 :(得分:0)

要解决您的具体问题:只需使用initializeString(names)代替initalizeString(String[] names)即可。但是你的程序不会按预期工作。 Java按值传递方法参数。这意味着您可以在s方法中重新分配initializeString(String[])参数,但这不会影响names字段。

此外,如果您创建new int[MAXSIZE],则默认情况下该数组将包含100个0值。您不必手动设置它们。最后但同样重要的是,您应该考虑使用Collections框架,尤其是List接口,而不是数组。它变得更容易使用并且没有明显的缺点。

答案 1 :(得分:0)

使用initalizeString(String[] names);不是调用方法的正确方法。调用方法时不指定类型。试试initializeString(names);

此外,你的循环中有一个一个一个错误,你应该使用...

for (int i = 0; i < MAXSIZE; i++) {

...因为数组是零索引的。