2016-10-22 164 views
0

运行此应用程序并调试指针不会进入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; 
} 
+4

你的'for'循环条件应该是'i nbrooks

+0

'我'从来没有比'len'更大。修复你的状况。 – matt

回答

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; 

} 
0

你有一个逻辑错误,这很可能是由于打字错误:

你要做的就是

  1. int len = s.length()
  2. int i=0
  3. 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