Je suis en train de créer un traducteur de code Morse et j'ai couru quelques problèmes. Il compile, mais quand j'essaie de l'exécuter, il ne me demande que la première question de savoir de quelle manière vous voulez traduire, et non ce que vous voulez traduire. Je sais que ma première fonction est très inefficace. J'utilise aussi Input.getString
ce que je ne pense pas être standard mais cela vous permet essentiellement d'entrer une chaîne.Morse Traducteur code
Ceci est mon code:
public class MorseCodeJavaProgram {
public static void morse(String s3){
int letters [ ] = new int [ 26 ];
for (int num = 0; num < s3.length(); num++){
switch (s3.charAt(num)){
case 'a':
System.out.print(".- ");
break;
case 'b':
System.out.print("-… ");
break;
case 'c':
System.out.print("-.-. ");
break;
case 'd':
System.out.print("-.. ");
break;
case 'e':
System.out.print(". ");
break;
case 'f':
System.out.print("..-. ");
break;
case 'g':
System.out.print("--. ");
break;
case 'h':
System.out.print("…. ");
break;
case 'i':
System.out.print(".. ");
break;
case 'j':
System.out.print(".--- ");
break;
case 'k':
System.out.print("-.- ");
break;
case 'l':
System.out.print(".-.. ");
break;
case 'm':
System.out.print("-- ");
break;
case 'n':
System.out.print("-. ");
break;
case 'o':
System.out.print("--- ");
break;
case 'p':
System.out.print(".--. ");
break;
case 'q':
System.out.print("--.- ");
break;
case 'r':
System.out.print(".-. ");
break;
case 's':
System.out.print("... ");
break;
case 't':
System.out.print("- ");
break;
case 'u':
System.out.print("..- ");
break;
case 'v':
System.out.print("...- ");
break;
case 'w':
System.out.print(".-- ");
break;
case 'x':
System.out.print("-..- ");
break;
case 'y':
System.out.print("-.-- ");
break;
case 'z':
System.out.print("--.. ");
break;
case ' ':
System.out.print(" | ");
break;
}
}
}
public static void toEnglish(String s1){
String english [ ] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z", " " };
String morse [ ] = { ".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", "…. ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", "| " };
for (int num = 0; num < s1.length(); num++){
if (s1.charAt (num) == ' '){
for (int num2 = num; num2 < s1.length(); num2++){
if (s1.charAt (num2++) == ' '){
for (int num3 = 0; num < 26; num3++){
if (s1.substring(num++, num2 + 2) == (morse [ num3 ])){
System.out.print(english [ num3 ]);
}
}
}
}
}
}
}
public static void main(String [] args){
String s2 = Input.getString("To Morse or From Morse");
if (s2 == "From Morse"){
String s1 = Input.getString("Please type a phrase in English");
toEnglish(" " + s1 + " ");
}
if (s2 == "To Morse"){
String s3 = Input.getString("Please type a phrase in Morse Code");
morse(s3);
}
}
}
Je ne sais pas pourquoi mon code est venu deux fois désolé – user1690013
Lorsque l'on compare les chaînes de texte, je suis un fan d'utiliser 'string.equalsIgnoreCase (anotherString);' –