2016-10-22 8 views
0

Beim Ausführen dieser Anwendung und Debugging tritt der Zeiger nicht in die for-Schleife. Was könnte die mögliche Ursache sein?Warum wird diese For-Schleife niemals ausgeführt?

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

Ihre 'for' Schleifenbedingungen sollten' i nbrooks

+0

'i' ist nie größer als' len'. Repariere deinen Zustand. – matt

Antwort

0

logische Ausgabe Versuchen Sie dies ..

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

Sie einen logischen Fehler, die aufgrund eines Tippfehler am wahrscheinlichsten ist:

Was Sie tun, ist

  1. int len = s.length()
  2. int i=0
  3. während i ist größer als len etwas tun

Wahrscheinlich len ist bereits > 0 und damit die Schleifen überhaupt nicht eingetragen. Als Yatish Agrawal wies darauf hin, die richtige Form für Ihre Schleifen wäre for (int i = 0; i < len; i++) und for (int k = 0; k < len; k++).

Sie können die erste Schleife durch "char [] a = s.toCharArray();" wenn dir die Ausgabe egal ist.

Auch wenn es hier nicht anwendbar ist, empfehle ich, für verbessert Schleifen, wie sie helfen, diese Fehler see, e.g., here zu verhindern.

Verwandte Themen