2016-10-22 179 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