2016-04-13 12 views
1

Ich habe ein Problem, wenn ein Benutzer einen Buchstaben eintippt und dann eingibt, wie viele Zahlen übersprungen werden sollen. Zum Beispiel Benutzertypen in Buchstaben abc, dann geben Sie 2 Zahlen ein, um übersprungen zu werden, die Ausgabe ist cdf, In meinem Programm funktioniert das gut. Wenn ein Benutzer jedoch xyz eingibt, tippt Nummer 4 ein. Mein Programm funktioniert nicht. Außerdem wird bei allen Buchstaben mit z die Ausgabe nicht angezeigt. Zum Beispiel xyz, dann ist die zu überspringende Zahl 1, die Ausgabe wird nur yz sein.Überspringen von Buchstaben funktioniert nicht beim Eingeben von Buchstaben z

public class Test2 { 

private Scanner sc = new Scanner(System.in); 
private char characters[]=  {'a','b','c','d','e','f','g','h','i','j','k','l','m', 
     'n','o','p','q','r','s','t','u','v','w','x','y','z'}; 

}

+0

Ihre 'f'-Loops scheinen keine obere Grenze zu haben. Kannst du erklären, was dein Code macht? –

+0

@TimBiegeleisen Mein Code wird den von einem Benutzer eingegebenen Buchstaben erhalten, dann gibt der Benutzer ein, wie viele Zahlen übersprungen werden sollen. zum Beispiel gebe ich a ein und gebe dann 1 ein. Die Ausgabe wird b sein, da a + 1 b sein wird. Aber wenn ich z und 1 als eine zu überspringende Zahl gebe, wird keine Ausgabe ausgegeben. –

+0

Und was soll der Ausgang sein, damit 'z' und' 1' übersprungen werden? –

Antwort

1

Ich denke, was Sie suchen, eine Art von Modul-Funktionalität ist, wobei der Buchstabe um an den Anfang des Alphabets in der Veranstaltung „wickelt“, dass der Offset geht vorbei an dem Buchstaben z . Versuchen Sie diesen Code:

String alphabet = "abcdefghijklmnopqrstuvwxyz"; 
for (int f=0; f < text.length(); f++) { 
    int index = alphabet.indexOf(text.charAt(f)); 
    System.out.println(alphabet.charAt((index + num) % 26)); 
} 

Dieser Code-Schnipsel wurde auf IntelliJ getestet und für die Eingabe xam und 4 gibt die korrekte Ausgabe beq.

+0

Danke. Wow du hast es richtig gemacht. –

Verwandte Themen