Hallo zusammen,
ich schreibe ein Programm welches auf Befehl eine von zwei möglichen Operationen ausführen soll.
Ich lese einen String ein.
String Codierung
Der User soll entweder v oder e eingeben. Dann erstelle ich eine if anweisung:
if ((Codierung.equalsIgnoreCase("v"))) {
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < Eingabe.length(); i++) {
char c = Eingabe.charAt(i);
int index = -1;
boolean isLowercase = false;
if (Alphabet.indexOf(c) != -1) {
index = Alphabet.indexOf(c);
} else if (Smallphabet.indexOf(c) != -1) {
isLowercase = true;
index = Smallphabet.indexOf(c);
}
if (isLowercase) {
sb2.append(Smallphabet.charAt((index + n )));
} else {
sb2.append(Alphabet.charAt((index + n )));
}
und so weiter.
Das selbe mache ich nochmal für String= e.
Während die Methode für "v" funktioniert, bekomme ich nach Ablauf des Programms bei "e" einen Index out of range error.
Beide Methoden sind aber bis auf minus n statt plus n komplett identisch.
Hat jemand einen Tip?
Besten Dank
Einen vom Benutzer eingegebenen Int Wert. Das Programm hatte wunderbar funktioniert bis ich gemerkt habe, dass Gross/Kleinschreibung nicht ignoriert wird. Damit hat der Schlamassel angefangen.
Ich wollte bloss, dass der Benutzer einen Buchstaben ungeachtet der Groß/kleinschreibung eingeben kann.
Bei welchen Eingabedaten fliegt denn die Exception und in welcher Zeile?
Was ich mir vorstellen kann ist dass in folgender Zeile die Exception fliegt, wenn n + index > Alphabet.length.
Um das nochmal klarzustellen: Die obere Methode funktioniert einwandfrei. Ich poste mal beide Methoden:
Funktioniert:
Java:
if((Codierung.equalsIgnoreCase("v"))){StringBuffer sb2 =newStringBuffer();for(int i =0; i <Eingabe.length(); i++){char c =Eingabe.charAt(i);int index =-1;boolean isLowercase =false;if(Alphabet.indexOf(c)!=-1){
index =Alphabet.indexOf(c);}elseif(Smallphabet.indexOf(c)!=-1){
isLowercase =true;
index =Smallphabet.indexOf(c);}if(isLowercase){
sb2.append(Smallphabet.charAt((index + n )));}else{
sb2.append(Alphabet.charAt((index + n )));}}System.out.println(sb2 );}
Funktioniert nicht:
Java:
elseif(Codierung.equalsIgnoreCase("e")){StringBuffer sb3 =newStringBuffer();for(int i =0; i <Eingabe.length(); i++){char c =Eingabe.charAt(i);int index =-1;boolean isLowercase =false;if(Alphabet.indexOf(c)!=-1){
index =Alphabet.indexOf(c);}elseif(Smallphabet.indexOf(c)!=-1){
isLowercase =true;
index =Smallphabet.indexOf(c);}if(isLowercase){
sb3.append(Smallphabet.charAt((index -n )));}else{
sb3.append(Alphabet.charAt((index -n)));}}System.out.println(sb3);}}}
Dann hör auf uns raten zu lassen
Du sagtest eingangs etwas von einem "Index out of range error".
Wie lautet der konkrete Stacktrace dazu? In welcher Zeile tritt er auf?
Okay, ich habs kapiert. Beim hoch oder runtergehen springt der index aus dem Alphabet. Gibt es eine Methode, damit das Alphabet am Ende wieder zum Anfang oder vom Anfang zum Ende springt? Also Z->A oder A->Z?