在运行此应用程序并调试指针时,不会进入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;
}
答案 0 :(得分:0)
逻辑问题试试这个..
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;
}
答案 1 :(得分:0)
您的逻辑错误很可能是由于输入错误造成的:
你做的是
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++)
。
你可以用&#34; char [] a = s.toCharArray();&#34;替换第一个循环。如果你不关心输出。
尽管此处不适用,但我建议您查找增强的循环,因为它们有助于防止出现这些错误see, e.g., here。