我有一个类,其中包含一个数组列表,用户将在其中输入其元素。我想我可以成功地将元素添加到这个数组列表,但我无法分辨,因为我无法输出数组列表。我想在主程序中调用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]);
}
}
}
答案 0 :(得分:1)
viewNYC
的返回类型为void
。删除return
循环中的for
关键字:
for (int i = 0; i < NYCArray.length; i++) {
System.out.println(i + 1 + ") \t" + NYCArray[i]); // no "return"
}
答案 1 :(得分:0)
你的程序编译是否应该通过编译错误(Void方法不能返回值)
return System.out.println(i+1 + ") \t" + NYCArray[i]);
,因为
System.out.println()
不会返回任何内容。如果要打印数组,请使用
System.out.println(Arrays.deepToString(NYCArray));
答案 2 :(得分:0)
首先,从sysout中删除return语句:
System.out.println(i + 1 + ") \t" + NYCArray[i]);
另外,如果我读了你的代码,我可以看到你有一个静态的String [] NYCArray,它不会在你的代码示例中更新。
因此,如果您添加NYC酒店,它将在NYCArray中不可见,此更新应在addNYC结束时完成 (使用ArrayList的新大小创建一个新数组,并将内容设置为ArrayList的内容)
答案 3 :(得分:0)
您确实在NYC中添加了元素,但这些更改不会反映在NYCArray中。 这一行:
public static String[] NYCArray = (String[])NYC.toArray(new String[NYC.size()]);
将NYCArray声明为字符串数组,并将其初始值设置为数组&#34; copy&#34;纽约市但是,该线只会运行一次,此时NYC仍然是空的!
如果要打印NYC的内容,请执行以下操作:
System.out.println(Arrays.toString(NYC.toArray()));
除非你有充分的理由保留它,否则我将彻底摆脱NYCArray。