【问题标题】:input/output of an array of objects in Java and StringTokenizerJava和StringTokenizer中对象数组的输入/输出
【发布时间】:2013-05-29 06:27:00
【问题描述】:

我有一个问题,但我不太确定它在哪里。 我正在从文本文件中读取数据,具体来说是 NRL 团队数据。数据以逗号分隔,数据为:俱乐部名称、俱乐部吉祥物、俱乐部别名。这个有20行左右。

我需要依赖类,并将一个类实例化为一个对象数组。类 Club 包含俱乐部名称、俱乐部吉祥物、俱乐部别名。

当我尝试将来自 clubArray 数组的俱乐部对象的“别名”字段中的数据打印到屏幕上时,它只打印“wests”,即数据文件中的最后一个条目。

我已经注释掉了其中的 setTeamName 和 setClubMascot 位,因为我遇到了一个错误,但是,代码应该仍然可以工作并将每个标记都放入别名数据字段中,不是吗?

如果有人能指出我做错了什么,将不胜感激。我不确定问题是将其写入数组以从数组中获取它还是介于两者之间。

public static void loadData(Club[] clubArray) throws FileNotFoundException
{
    int i = 0;
    File myfile = new File("NRLclubs.txt");
    if(myfile.exists())
    {
        Scanner inputFile = new Scanner(myfile);

        // Read until the end of the file.
        while (inputFile.hasNext())
        {
            clubArray[i] = new Club();
            String line = inputFile.nextLine();
            StringTokenizer strToken = new StringTokenizer(line, ",");

            while(strToken.hasMoreTokens())
            {
                /*String teamToken = strToken.nextToken();
                Club.setTeamName(teamToken);

                String mascotToken = strToken.nextToken();
                Club.setClubMascot(mascotToken);
                */

                String aliasToken = strToken.nextToken();
                Club.setClubAlias(aliasToken);
            }
            //System.out.println(Club.getClubAlias());
            i++;
        }
        inputFile.close();

        int k = 0;
        while(k < i)
        {
            Club.displayClubAlias(clubArray[k]);
            k++;
        }

    }
    else
        System.out.println("The file was not found");
}

这些是我的 setter、getter 和 displayClubAlias 方法:

 public static void setClubAlias(String alias)
{
    clubAlias = alias;
}

public String getClubAlias()
{
    return clubAlias;
}

public static void displayClubAlias(Club c)
{
    System.out.println(c.getClubAlias());
}

【问题讨论】:

    标签: java arrays object file-io stringtokenizer


    【解决方案1】:

    您混淆了实例字段(方法)静态字段(方法)

    // in class Club
    public String clubAlias; // no static
    public void setClubAlias(String alias) // no static
    {
        clubAlias = alias;
    }
    
    // in method loadData
    clubArray[i].setClubAlias(aliasToken); // not Club 
    

    【讨论】:

      【解决方案2】:

      只有在静态属性的情况下,Getter 和 setter 才应该是静态的。如果您尝试为非静态属性定义静态 getter/setter,某些 IDE 会发出警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        相关资源
        最近更新 更多