Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
In einer Zeichenkette wird jeder Buchstabe durch seinen Nachfolger ersetzt: A → B, B → C, C → D, …, Y → Z, Z → A. Die Methoden, die einen String in einem Rutsch in ein Array of Character und umgekehrt umwandeln, dürfen nicht verwendet werden.
Kann mir jemand weiterhelfen?
Hm...den String in einer For-Schleife durchlaufen, und bei jeder Iteration in drei Teile-linker Teil, einzelnes Zeichen, rechter Teil-zerlegen. Den mittleren String (das einzelne Zeichen) nach Character konvertieren, inkrementieren, und den String wieder zusammenbauen. Überlauf von Z -> A abfangen.
Hm...den String in einer For-Schleife durchlaufen, und bei jeder Iteration in drei Teile-linker Teil, einzelnes Zeichen, rechter Teil-zerlegen. Den mittleren String (das einzelne Zeichen) nach Character konvertieren, inkrementieren, und den String wieder zusammenbauen. Überlauf von Z -> A abfangen.
mhhh... da fehlt aber doch noch einiges was er jetzt einfügen kann
Des weiteren finde ich lernt man auch etwas wenn man sich Code von anderen anschaut
LG
Hm...ich weiß nicht. Man kann durchaus von anderer Leute Arbeit lernen, das kommt aber ganz auf die individuelle Lerneinstellung an. Damit sammelt man Wissen, jedoch kaum Erkenntnis. Gerade letztere halte ich gerade am Anfang jedoch für wichtiger. Die Methode charAt() hätte man (auf jedenfall der TS) gleich gefunden, wenn man mal geschaut hätte was die IDE einem bei String für Methoden anbietet. (Wie man sieht, habe ich das auch nicht gemacht )
White_Fox da gebe ich dir recht Leider schaue ich auch zu wenig in die APIs
Warten wir einfach ab was if_schleife meint vielleicht ist es ja auch falsch
Also ich habe immer etwas davon wenn jemand eine Lösung Postet oder ich mir Lösungen an schaue denoch gebe ich dir weiterhin recht das nächste mal anders
Danke euch beiden für die Hilfe. @oscme ja es ist bissl ärgerlich wenn man die Lösung vorkriegt, ich werde mit intensiv damit auseinandersetzen um es wirklich zu verstehen.
Was mir jetzt noch fehlt ist, dies so zu machen, dass es bei einer Eingabe die Zeichenkette ausgibt, also bei "Julius Caesar" sollte "Kvmjvt Dbftbs" rauskommen. Ich werde das mal versuchen.
So ich habe das mit der Eingabe hinzugefügt. Wenn ich Julius Caeser eingebe kommt nur Kvmjvt , also das Leerzeichen wird garnicht beachtet und die darauffolgende Zeichen auch nicht.
Code:
import java.util.Scanner;
public class Zeichenkette {
public static void main(String[] args) {
String test = "";
String output = "";
System.out.println("Geben sie Buchstaben ein: ");
Scanner in = new Scanner(System.in); // Eingabegerät hinzufügen
test = in.next();
for(int i=0;i<test.length();i++) {
char tmp = test.charAt(i);
output+=(char) (tmp+1);
}
System.out.println(output);
}
}
Danke, die Zeichenkette wird bis ende der Zeile gelesen, aber noch ein, zwei kleine Probleme. Beide einem Leerzeichen gibt es ein "!" aus und bei "z" gibt es "{" aus, was ich nicht verstehe
Nun ja .. jeder char kann ja durch eine Zahl repräsentiert werden (siehe ASCII-Tabelle ). Das ist ja überhaupt der Grund, warum du einfach +1 addieren kannst. Schau dir die Tabelle mal genau an (bei zB SP = space = Leerzeichen) und überleg warum ! ausgegeben wird. Das gleiche bei Z/z
Ein Zeichen ist für den Computer nur eine Zahl. Es gibt eine Tabelle, welcher Zahl welches Zeichen zugeordnet ist. Wenn du die Zahl immer weiter inkrementierst, dann kommen irgendwann auch andere Zeichen als Buchstaben.
Ich schätze deine Einstellung sehr! Was dir noch fehlt, ist die Abfrage, ob der String, welcher durchsucht wird, ein Leerzeichen enthält. Wenn ja, dann sollte dies vom Code berücksichtigt werden.
Nun ja .. jeder char kann ja durch eine Zahl repräsentiert werden (siehe ASCII-Tabelle ). Das ist ja überhaupt der Grund, warum du einfach +1 addieren kannst. Schau dir die Tabelle mal genau an (bei zB SP = space = Leerzeichen) und überleg warum ! ausgegeben wird. Das gleiche bei Z/z
Ein Zeichen ist für den Computer nur eine Zahl. Es gibt eine Tabelle, welcher Zahl welches Zeichen zugeordnet ist. Wenn du die Zahl immer weiter inkrementierst, dann kommen irgendwann auch andere Zeichen als Buchstaben.
Ich habe es hinbekommen, dass es bei einer Eingabe von "z" eine "a" ausgibt und bei einem Leerzeichen auch ein Leerzeichen ausgibt.
Nun ist es so, dass es zusätzlich noch das nächste Zeichen ausgibt also bei "z" gibt es "a" und "{" aus. Wahrscheinlich hat es was mit dem +1 zu tun?
if((c >= a && c <= z) || (c >= A && c <= Z)){
//increment and handle overflow
}
Das ganze meinte ich ja was oben bei meinem Code noch fehlen würde
Freut mich aber immer wieder wie nett man hier geholfen bekommt "macht bitte alle weiter so"
if((c >= a && c <= z) || (c >= A && c <= Z)){
//increment and handle overflow
}
Das ganze meinte ich ja was oben bei meinem Code noch fehlen würde
Freut mich aber immer wieder wie nett man hier geholfen bekommt "macht bitte alle weiter so"
Hey, erstmal danke für euer Beiträge. Ich weiß, ich nerve :/. Ich habe das mit der if-Abfrage probiert.
Eclipse sagt, dass es sich bei der if-Abfrage um einen "dead code" handelt,
Desweiteren wird bei der Abfrage sortiert welche Zeichen man nicht anfassen will. ?!
Wie kriege ich es mit dem Overflow hin. Also , nach einem "z" soll ein "a" ausgegeben werden und nach einem
Leerzeichen, ein Leerzeichen ausgeben. Ich hatte ja vorher versucht die einzelnen Zeichen, also "z" und Leerzeichen abzufragen und
und das entsprechende Zeichen auszugeben, was ja nur teilweise geklappt hat.
@ifschleife
Versuche mal, etwas vom Code wegzukommen. Lerne zu abstrahieren und dein Problem erstmal in Pseudocode zu formulieren. Du willst Java lenen. Aber Programmieren zu können und eine Programmiersprache zu können sind zwei völlig verschiedene Dinge, und die echte Kunst ist ersteres. Längst nicht jeder beherrscht diese, egal wieviele Programmiersprachen er kennt (oder zu kennen meint).
Daher: Du hast genau zwei Mengen von Zeichen: Die Menge der Zeichen, die inkrementiert werden soll und die Menge der Zeichen, die du nicht anrühren willst.
Was du machen könntest (beachte den Konjunktiv!):
Für jeden einzelnen, in der Zeichentabelle vorkommenden, Eintrag eine eigene If-Abfrage schreiben. If(c == 'a')...; If(c == 'b')...
Beachte dabei, daß du diese If-Abfragen nicht nur für lateinische Buchstaben, Zahlen und die gängigen Sonderzeichen beachten müßtest. Das wäre zwar schon viel, aber dann kämen noch das griechische und das kyrillische Alphabet hinzu. Außerdem das arabische, jüdische, sowie die verschiedenen chinesischen und japanischen Alphabete hinzu. Plus das, was der UTF16-Standard sonst noch so bereithält.
Es würde theoretisch zwar gehen, aber du würdest einen riesigen, unüberschaubaren Codewust produzieren. (Wobei mich an dieser Stelle interessieren würde, ob die JVM daß auch so langwierig ausführen würde oder das clever optimiert. Egal, andere Baustelle.)
Im Prinzip ist das, was ich im vorherigen Absatz geschrieben habe, jedoch genau das was du mit der einzelnen Leerzeichenabfrage im Post weiter oben gemacht hast. Versuche mal, dein Problem verbal zu lösen. So ganz ohne Javacode.
NEIN du Nervst nicht!!!
Das ist vollkommen normal beim Anfang. Das große Problem ist wie White_Fox schon sagte, man muss erst einmal versuchen das Problem abstrahieren zu können.
Versuch es nochmal und Poste so oft du willst hier dein voran kommen
So aber bevor der/die ifschleife jetzt verzweifelt, schau mal im Thema hier auf Seite 1 ganz unten hast du einen netten Code geschrieben mit deinem Leerzeichen etc. das setze mit dem von White_Fox zusammen dann sollte es klappen
Das kannst du dir sparen es so zu schreiben.
Einfach so:
Code:
output+=" "
Habe das Programm von dir noch nicht ausprobiert aber fehlt da nicht noch die Abfrage nach dem großen Z.
Was kommt denn nach dem großen Z ist da nicht auch ein Sonderzeichen?
Das kannst du dir sparen es so zu schreiben.
Einfach so:
Code:
output+=" "
Habe das Programm von dir noch nicht ausprobiert aber fehlt da nicht noch die Abfrage nach dem großen Z.
Was kommt denn nach dem großen Z ist da nicht auch ein Sonderzeichen?
Hey, erstmal danke für euer Beiträge. Ich weiß, ich nerve :/. Ich habe das mit der if-Abfrage probiert.
Eclipse sagt, dass es sich bei der if-Abfrage um einen "dead code" handelt,
Desweiteren wird bei der Abfrage sortiert welche Zeichen man nicht anfassen will. ?!
Wie kriege ich es mit dem Overflow hin. Also , nach einem "z" soll ein "a" ausgegeben werden und nach einem
Leerzeichen, ein Leerzeichen ausgeben. Ich hatte ja vorher versucht die einzelnen Zeichen, also "z" und Leerzeichen abzufragen und
und das entsprechende Zeichen auszugeben, was ja nur teilweise geklappt hat.