我正在编写java代码以循环ArrayList
String
个String
。如果import java.util.ArrayList;
public class Client {
public static void main(String[] args) {
ArrayList<String> list= new ArrayList<String>();
list.add("hello");
list.add("me");
//without loop: this gives me correct output
if(list.get(0).length()==2) list.add(0, "**");
if(list.get(1).length()==2) list.add(1, "**");
/* when i loop i get an error,
for(int i=0; i<list.size()-1; i++) {
if(list.get(i).length()==2) list.add(i, "**");
}
*/
System.out.println(list);
}
}
的长度为4,则在其前面添加一个特定字符。
这是我写的代码。当我明确地做事时它会起作用,但是当我写这个循环时它没有,我无法找到我的错误。
以下是一个例子。我希望输出为(&#34;你好&#34;,&#34; **&#34;,&#34;我&#34;)
{{1}}
答案 0 :(得分:2)
size() - 1
错了,添加需要跳过额外的内容。
for (int i=0; i < list.size(); i++) {
if (list.get(i).length() == 2) {
list.add(i, "**");
i++; // Do skip the item
}
}
BTW:有人可能写道:
List<String> list = new ArrayList<>();
Collections.addAll(list, "hello", "me");
答案 1 :(得分:-1)
您可以使用增强的for循环遍历所有字符串并具有直接访问权限,而不必索引来访问它们。
for (String s : list)
{
/* CODE */
}
而不是必须使用get
方法来访问字符串及其长度,您只需使用s
变量并使用s.length()
答案 2 :(得分:-1)
你应该这样做
import java.util.ArrayList;
public class Client {
public static void main(String[] args) {
ArrayList<String> list= new ArrayList<String>();
ArrayList<String> newList= new ArrayList<String>();
list.add("hello");
list.add("me");
for(int i=0; i<list.size(); i++) {
if(list.get(i).length()==2)
newList.add("**");
else
newList.add(list.get(i));
}
System.out.println(newList);
}