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.
Hallo, kann mir jemand sagen, warum der Abschnitt von Zeile 12 bis 16 nicht funktioniert, würde so gerne die Buchstaben aus satzNeu in Morsecode umwandeln.
String[][] codes entspricht der Morsetabelle, also Buchstabe + jeweilige Morsecode.
Java:
public static String[][] convert2Morse(String[][] codes, String satz) {
//Macht Leerzeichen vorn und hinter dem Satz weg
String satzTrim = satz.trim();
char[] satzNeu = new char[satzTrim.length()];
for(int i=0;i<satzNeu.length;i++) {
satzNeu[i] = satzTrim.charAt(i);
}
System.out.println("\nIhr Satz in Morsecode: ");
for(int j=0; j<satzNeu.length;j++) {
if(satzNeu[j].equals(codes[j][0])) { //Funktioniert nicht
System.out.println(codes[j][1]);
}
}
return codes;
}
Du heißt zwei Arrays - einmal das array Satz-Neu und einmal das 2D Array codes.
Du verwendest einen Index (j) um auf Beide Arrays zuzugreifen. Das kann nicht richtig sein.
Du überprüfst, ob an der Zeichen an der Stelle 0 im Code auch an der Stelle 0 steht. Das ist mit Sicherheit (außer dein Satz ist abcdef...) nicht der Fall.
Du wirst eine weitere Schleifen brauchen in der du im Array code das Zeichen suchst, was in satzNeu an der Stelle j steht.
Wo zu brauchst du überhaupt ein 2D Array?
Ein normales würde doch reichen.
Hier ein Beispiel für die Drei Buchstaben.
Das minus 65 ist weil im ASCII Code das „A“ -> 65 ist als Char.
Füge doch die anderen Morse Codes noch ein.
Ich habe mir das Rückgeben erstmal gespart nur die aus Ausgabe auf Konsole.
ein prüfen ob es wirklich nur Buchstaben also von A-Z sind erfolgt natürlich noch nicht.
auch das Leerer Zeichen ASCII 32 wird nicht erkannt werden.
kannst du machen
Java:
public static void main(String[] args) {
String[] code = {".-","-...","-.-."}; // A, B,C....
convert2Morse(code, "BAaC");
}
public static void convert2Morse(String[] codes, String satz) {
//Macht Leerzeichen vorn und hinter dem Satz weg
String satzTrim = satz.trim();
satzTrim = satzTrim.toUpperCase();
char[] satzNeu = new char[satzTrim.length()];
for(int i=0;i<satzNeu.length;i++) {
satzNeu[i] = satzTrim.charAt(i);
}
System.out.println("\nIhr Satz in Morsecode: ");
for(int j=0; j<satzNeu.length;j++) {
System.out.println(codes[satzNeu[j]-65]);
}
Warum nicht einfach eine Map - Buchstabe -> Morsezeichen? Einmal über den Satz iterieren und die Morsezeichen der Map entnehmen und einem StringBuilder hinzufügen. Warum muss immer alles mit Arrays gemacht werden?
Warum nicht einfach eine Map - Buchstabe -> Morsezeichen? Einmal über den Satz iterieren und die Morsezeichen der Map entnehmen und einem StringBuilder hinzufügen. Warum muss immer alles mit Arrays gemacht werden?