在for循环中返回一系列print语句

时间:2013-04-11 13:32:15

标签: java

我有一个类,其中包含一个数组列表,用户将在其中输入其元素。我想我可以成功地将元素添加到这个数组列表,但我无法分辨,因为我无法输出数组列表。我想在主程序中调用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 个答案:

答案 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。