0

我有一个包含用户将输入其元素的数组列表的类。我想我可以成功地将元素添加到这个数组列表中,但我无法判断,因为我无法输出数组列表。我想在主程序中调用 viewNYC 方法,并让它在 cmd 提示符中显示其元素列表。任何人都可以帮忙吗?

import java.util.*;

class Hotels{

    public static ArrayList NYC = new ArrayList();

    public static String[] NYCArray = (String[])NYC.toArray(new String[NYC.size()]);

    public static void addNYC(String hotel){
        String NYChotel = hotel;
        NYC.add(NYChotel);
    }


    public static void viewNYC(){   //Will be called in main programme

        for(int i=0; i< NYCArray.length; i++){
            return System.out.println(i+1 + ") \t" + NYCArray[i]);
        }
    }
}   
4

4 回答 4

1

的返回类型viewNYCvoid。删除循环return中的关键字:for

for (int i = 0; i < NYCArray.length; i++) {
   System.out.println(i + 1 + ") \t" + NYCArray[i]); // no "return"
}
于 2013-04-11T13:34:31.850 回答
0

首先,从 sysout 中删除 return 语句:

System.out.println(i + 1 + ") \t" + NYCArray[i]);

此外,如果我阅读了您的代码,我可以看到您有一个静态 String[] NYCArray,它不会在您的代码示例中更新。

因此,如果您 addNYC 是一家酒店,它将在 NYCArray 中不可见,此更新应在 addNYC 结束时完成(使用 ArrayList 的新大小创建一个新数组并将内容设置为您的 ArrayList 的内容)

于 2013-04-11T13:43:19.217 回答
0

您确实在向 NYC 添加元素,但这些更改不会反映在 NYCArray 中。该行:

public static String[] NYCArray = (String[])NYC.toArray(new String[NYC.size()]);

将 NYCArray 声明为字符串数组,并将其初始值设置为 NYC 的数组“副本”。但是,这条线只会运行一次,此时纽约市仍然是空的!

如果要打印 NYC 的内容,请执行以下操作:

System.out.println(Arrays.toString(NYC.toArray()));

除非您有充分的理由保留它,否则我会完全摆脱 NYCArray。

于 2013-04-11T13:52:45.933 回答
0

您的程序是否正在编译,因为它应该通过编译错误(无效方法无法返回值)在

 return System.out.println(i+1 + ") \t" + NYCArray[i]);

因为

System.out.println()

不返回任何东西。如果要打印数组,请使用

System.out.println(Arrays.deepToString(NYCArray));
于 2013-04-11T13:40:50.723 回答