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:
publicstaticString[][]convert2Morse(String[][] codes,String satz){//Macht Leerzeichen vorn und hinter dem Satz wegString satzTrim = satz.trim();char[] satzNeu =newchar[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 nichtSystem.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:
publicstaticvoidmain(String[] args){String[] code ={".-","-...","-.-."};// A, B,C....convert2Morse(code,"BAaC");}publicstaticvoidconvert2Morse(String[] codes,String satz){//Macht Leerzeichen vorn und hinter dem Satz wegString satzTrim = satz.trim();
satzTrim = satzTrim.toUpperCase();char[] satzNeu =newchar[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?