2017-05-22 13 views
2

Das ist, was ich habe:Wie verschiebe ich Array-Zeichen in Java nach rechts?

class encoded 
{ 
    public static void main(String[] args) 
    { 
     String s1 = "hello"; 
     char[] ch = s1.toCharArray(); 
     for(int i=0;i<ch.length;i++) 
     { 
      char c = (char) (((i - 'a' + 1) % 26) + 'a'); 
      System.out.print(c); 
     } 
    } 
} 

Bisher habe ich die Zeichenfolge in ein Array umgewandelt haben, und ich habe gearbeitet, wie zu verschieben, aber ich bin jetzt stecken.

Was ich will, ist der Code bei ch[0] zu starten, das Zeichen lesen, verschieben sie eine nach rechts (h-i) und führen Sie dann das gleiche für jedes Zeichen in der Anordnung, bis das Ende erreicht ist.

Momentan gibt mein Code opqrs aus. Ich möchte, dass es ifmmp ausgibt. Wenn ich die int i = 0 in der for Schleife mit int i = ch[0] ersetzen, ist es bei i beginnen, aber dann es gibt nur ijklmno...

ich es h will, Ausgabe als i lesen, lesen e, Ausgabe als f, und so weiter, bis es erreicht das Ende des Arrays.

+1

Überlegen Sie, was Sie tun. Was ist der Zweck der Variablen "i"? Wo sind die Charaktere gespeichert, die du "verschieben" willst? –

Antwort

4

Sie verwenden den Schleifenindex i anstelle der i te Zeichen in der Schleife, die die Ausgabe des Codes bedeutet nicht den Eingang hängt String (gut, mit Ausnahme der Länge des Ausgangs, die die gleiche ist wie die Länge der Eingabe).

ändern

char c = (char) (((i - 'a' + 1) % 26) + 'a'); 

zu

char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a'); 
+0

Vielen Dank! Könntest du bitte erklären, was sich zwischen den beiden geändert hat? –

+0

@AliNisar bearbeitet – Eran

0

ersetzen i - 'a' + 1 mit ch[i] - 'a' + 1

class encoded { 

    public static void main(String[] args) 
    { 
    String s1 = "hello"; 
    char[] ch = s1.toCharArray(); 
    for(int i=0;i<ch.length;i++) 
    { 
     char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a'); 
     System.out.print(c); 
    } 
    } 
} 
Verwandte Themen