如果某个字母存在于另一个 ArrayList 中,我正在尝试更新包含字母的字符串 ArrayList。但是,代码只更新它遇到的第一个实例,而不是所有实例。ArrayList word 包含字母 h,e,l,l,o, ,w,o,r,l,d,ArrayList underscores 包含与单词中每个字母对应的下划线。对于单词中的每个字母,我想获取它的索引并在同一索引处用该字母更新下划线。例如,对于 l,我想更新下划线以显示除了在 word 中找到字母 l 的索引之外的下划线。import java.util.ArrayList;class Main { public static void main(String[] args) { ArrayList<String> word = new ArrayList<String>(); word.add("h"); word.add("e"); word.add("l"); word.add("l"); word.add("o"); word.add(" "); word.add("w"); word.add("o"); word.add("r"); word.add("l"); word.add("d"); for (String letter:word) { System.out.print(letter); } System.out.println(); ArrayList<String> underscores = new ArrayList<String>(); for (String letter:word) { if (letter.equals(" ")) { underscores.add(" "); } else { underscores.add("-"); } } for (String letter: underscores) { System.out.print(letter); } String l = "l"; for (String s:word) { if (s.equals(l)) { int index = word.indexOf(s); underscores.set(index, l); } } System.out.println(); for (String s:underscores) { System.out.print(s); } }}
1 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
问题是word.indexOf(s)
总是返回给定元素第一次出现的索引。来自List
文档:
返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回最低索引 i 使得 (o==null ? get(i)==null : o.equals(get(i))),如果没有这样的索引则返回 -1。
for-each
您可以使用简单的旧for
循环来更新列表中给定位置的字符串,而不是使用循环underscores
:
for (int i = 0; i < underscores.size(); i++) {
if (word.get(i).equals(l)) {
underscores.set(i, l);
}
}
输出将是:
hello world
----- -----
--ll- ---l-
添加回答
举报
0/150
提交
取消