如何跳过像这样的for循环的一次迭代:
for (int i = 65; i <= 90; i++) {
if (!(i == 73)) {
uniq.add((char) i);
}
}
uniq
应包含字母,不包括'I'
。有没有其他方法可以解决这个问题?我刚刚开始使用Java,我试图尽可能简单地做到这一点。
答案 0 :(得分:2)
在幕后,char
只是0到65,535之间的数字(无符号short
),这意味着您可以对char
进行算术运算,甚至可以使用它们在循环中。这可以使很多文本繁琐的代码更容易阅读。考虑:
for (char c = 'A'; c <= 'Z'; c++) {
if (c != 'I') {
uniq.add(c);
}
}
现在我们很清楚我们正在循环使用ASCII字母表,将每个char
添加到列表中,并跳过'I'
。
作为@ C.B.我在评论中讨论过,你也可以这样做:
for (char c = 'A'; c <= 'Z'; c++) {
uniq.add(c);
}
uniq.remove('I');
但是,根据您的数据限制,这可能会有问题。如果uniq
是List
,则.remove()
操作必须遍历整个列表,这不必要地浪费。
答案 1 :(得分:1)
直接执行以下代码应该有效。 使用此方法,您不需要知道相应的ACSII或Unicode字母表示。
for (int i = 'A'; i <= 'Z'; i++) {
if (i != 'I') {
uniq.add((char) i);
}
}
答案 2 :(得分:0)
看起来你可能已经采用了最简单的方法之一。
更加冗长,但也许不那么优雅(虽然可以说是更容易阅读)的方式来完成同样的事情可能是这样的:
for (int i = 65; i < 73; i++) {
uniq.add((char) i);
}
for (int i = 74; i <= 90; i++) {
uniq.add((char) i);
}
当你编写源代码时,我喜欢认为你是为人而不是计算机而写。尽量强调可读性而非短缺。