所以我正在获取一个包含以下字符串的输入文件:
birthday54
happy75
nifty43
bob1994
这些字符串是 ArrayList 的一部分。我想通过一个方法传递这个 ArrayList,该方法可以获取每个单独的字符串并单独打印出来。所以基本上,我如何获取字符串的 ArrayList,分隔每个单独的字符串,然后打印这些字符串?在我的代码中,我的 while 循环条件为 true,所以我在这里有一个无限循环,它只无限输出第一个字符串"birthday54"。我不知道我应该对while循环有什么条件。或者如果我什至应该有一个循环。这是我的代码:
public static void convArrListToString(ArrayList<String> strings){
int i=0;
while (true){
String[] convert = strings.toArray(new String[i]);
System.out.println(convert[i]);
}
}
public static void main(String [] args)
{
Scanner in = new Scanner(new File("myinputcases.txt"));
ArrayList<String> list = new ArrayList<String>();
while (in.hasNext())
list.add(in.next());
convArrListToString(list);
你只需要迭代 ArrayList 并使用"Get"方法来获取每个字符串,如下所示:
for(int i = 0 ; i < list.size(); i++){
System.out.println(list.get(i));
}
或者您可以使用 for each 循环
for(String s : list){
System.out.println(s);
}
干杯!
更改以下内容:
while (true) {
String[] convert = strings.toArray(new String[i]);
System.out.println(convert[i]);
}
对此:
for (String strTemp : strings) {
System.out.println(strTemp);
}
它只会输出"生日54",因为你没有增加你的i
。您可以通过在 while 语句的末尾放置 i++
来递增它,但如果在迭代ArrayList
中的所有值后执行此操作,则会出现错误。看看我的回答,你可以简单地使用for
循环来迭代该ArrayList
。
看着很痛苦的人,试试这个而不是你的 while 循环:
for (String s : strings) {
System.out.println(s);
}
不需要while循环,数组列表是一个Collections对象,它是Java中的一个容器类,可以按对象和索引迭代,所以这应该逐个拉出每个字符串,直到它接近数组列表的末尾。
Java 中的集合资源。