已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
3天前关闭。
Improve this question
我做了这个代码:
private static void fix (List<String> hg){
String k1 = hg.get(0);
String k2 = hg.get(1);
String k3 = hg.get(2);
String k4 = hg.get(3);
String k5 = hg.get(4);
List <Character> d = new ArrayList<>();
for (int j = 0; j < k1.length(); j++) {
d.add(j, k1.charAt(j));
}
Iterator <Character> sdf = d.iterator();
while (sdf.hasNext()){
Character r = sdf.next();
if (r.equals('g')){
hg.add(k1);
}
if (r.equals('d')){
hg.remove(k1);
}
if (r.equals('g') || r.equals('d')){ }// how to get out of this "if" beyond what I did?
}
upd:我们检查一个单词数组。如果一个单词包含“g”,它应该加倍。如果一个单词包含“d”,则应删除。如果一个单词包含'g'和'd',则应忽略它。在我的例子中,任何包含“d”或“g”2次或更多次的单词将被加倍或删除或添加。我猜这段代码的问题是第三个“if”,我们在一个单词中同时搜索“d”和“g”。
其主要思想是忽略包含字母“g”和“d”的单词。
我知道我们可以使用这样的方法:
if (r.equals('g') || r.equals('d')){ continue; }
if (r.equals('g') || r.equals('d')){ break; }
if (r.equals('g') || r.equals('d')){ System.out.println(); }
其中3个是无用的,原因idea告诉运算符continue
作为循环中的最后一条语句是不必要的。运算符break
是不合适的,因为它会破坏代码,使其无法正常工作。System.out.println()
很合身,但它在控制台中腾出了巨大的空间。
3条答案
按热度按时间qvtsj1bj1#
您应该使用
else if
,然后可以应用continue
命令:bxjv4tth2#
通过Assert它不是 g 或 d 来限定 r,然后委托它的值。
当你有类似的 * if语句 * 时,使用 *switch语句 * 通常是个好主意。
比如
或者,您可以为 g 和 d 添加一个 case,并使用一个空的 * code-block *。
此主题称为 “控制流”。
以下是一些相关链接。
作为建议,k1 上的 * for循环 * 可以简化为 stream。
或者,只使用 char[] 而不是 String。
mrwjdhj33#
根本不需要使用第二个循环。你可以使用
String.indexOf()
。使用函数式编程
不使用函数式编程