【问题标题】:How can I initialize this array by calling this method?如何通过调用此方法来初始化此数组?
【发布时间】:2013-11-17 01:16:51
【问题描述】:

出于某种原因,我只是不知道如何为顶部的变量调用底部的两个方法。当我做 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] = "";
        }

    }

}

【问题讨论】:

    标签: java arrays


    【解决方案1】:

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

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

    【讨论】:

    • 这是课堂作业,我们不允许使用以前在课堂上没有教过的材料。但是为了回应您的回答,使用 initalizeString(names) 给了我“找不到符号 - 方法 initalizeString(java.lang.String[]); 也许你的意思是: initalizeString(String[]) 的错误
    • @user2899245 这个错误似乎是由拼写错误引起的,但我没有发现它。确保正确拼写方法的名称。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2016-05-26
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多