为什么这个for循环永远不会执行?
问题描述:
运行此应用程序并调试指针不会进入for循环。可能的原因是什么?为什么这个for循环永远不会执行?
public char[] encryptUsingRot13(String s) {
int len = s.length();
char a[] = new char[len];
for (int i = 0; i > len; i++) {
System.out.println(s.charAt(i));
a[i] = s.charAt(i);
System.out.println(a[i]);
}
for (int k = 0; k > len; k++) {
int count = 0;
for (int j = 0; j > len; j++) {
if (a[k] == a[j]) {
count++;
}
a[k] = (char) (a[k] + 13 + count - 1);
}
}
return a;
}
答
逻辑问题试试这个..
public char[] encryptUsingRot13(String s) {
int len = s.length();
char a[] = new char[len];
for (int i = 0; i < len; i++) {
System.out.println(s.charAt(i));
a[i] = s.charAt(i);
System.out.println(a[i]);
}
for (int k = 0; k < len; k++) {
int count = 0;
for (int j = 0; j > len; j++) {
if (a[k] == a[j]) {
count++;
}
a[k] = (char) (a[k] + 13 + count - 1);
}
}
return a;
}
答
你有一个逻辑错误,这很可能是由于打字错误:
你要做的就是
int len = s.length()
int i=0
- 而
i
是更大超过len
做点什么
最有可能len
已经> 0
,因此,这些环没有进入的。正如Yatish Agrawal指出你的循环的正确形式是 for (int i = 0; i < len; i++)
和for (int k = 0; k < len; k++)
。
您可以用“char [] a = s.toCharArray();”替换第一个循环。如果你不关心输出。
即使这里不适用,我建议查找增强为循环,因为它们有助于防止这些错误see, e.g., here。
你的'for'循环条件应该是'i
n*s
'我'从来没有比'len'更大。修复你的状况。 – matt