我对编程很陌生,在不使用整数时无法理解循环。我正在努力使英语成为莫尔斯代码翻译,并且到目前为止已经完成了这项工作:
import java.util.Scanner;
public class EnglishToMorse {
public static void main(String[] args) {
System.out.println("Please enter text you wish to convert to Morse Code.");
Scanner sc =new Scanner(System.in);
String english = sc.next();
if (english.equalsIgnoreCase("A")){
System.out.print(".- ");
}
if (english.equalsIgnoreCase("B")){
System.out.print("-... ");
}
if (english.equalsIgnoreCase("C")){
System.out.print("-.-. ");
}
if (english.equalsIgnoreCase("D")){
System.out.print("-.. ");
}
if (english.equalsIgnoreCase("E")){
System.out.print(". ");
}
if (english.equalsIgnoreCase("F")){
System.out.print("..-. ");
}
if (english.equalsIgnoreCase("G")){
System.out.print("--. ");
}
if (english.equalsIgnoreCase("H")){
System.out.print(".... ");
}
if (english.equalsIgnoreCase("I")){
System.out.print(".. ");
}
if (english.equalsIgnoreCase("J")){
System.out.print(".--- ");
}
if (english.equalsIgnoreCase("K")){
System.out.print("-.- ");
}
if (english.equalsIgnoreCase("L")){
System.out.print(".-.. ");
}
if (english.equalsIgnoreCase("M")){
System.out.print("-- ");
}
if (english.equalsIgnoreCase("N")){
System.out.print("-. ");
}
if (english.equalsIgnoreCase("O")){
System.out.print("--- ");
}
if (english.equalsIgnoreCase("P")){
System.out.print(".--. ");
}
if (english.equalsIgnoreCase("Q")){
System.out.print("--.- ");
}
if (english.equalsIgnoreCase("R")){
System.out.print(".-. ");
}
if (english.equalsIgnoreCase("S")){
System.out.print("... ");
}
if (english.equalsIgnoreCase("T")){
System.out.print("- ");
}
if (english.equalsIgnoreCase("U")){
System.out.print("..- ");
}
if (english.equalsIgnoreCase("V")){
System.out.print("...- ");
}
if (english.equalsIgnoreCase("W")){
System.out.print(".-- ");
}
if (english.equalsIgnoreCase("X")){
System.out.print("-..- ");
}
if (english.equalsIgnoreCase("Y")){
System.out.print("-.-- ");
}
if (english.equalsIgnoreCase("Z")){
System.out.print("--.. ");
}
if (english.equalsIgnoreCase("1")){
System.out.print(".---- ");
}
if (english.equalsIgnoreCase("2")){
System.out.print("..--- ");
}
if (english.equalsIgnoreCase("3")){
System.out.print("...-- ");
}
if (english.equalsIgnoreCase("4")){
System.out.print("...- ");
}
if (english.equalsIgnoreCase("5")){
System.out.print("..... ");
}
if (english.equalsIgnoreCase("6")){
System.out.print("-.... ");
}
if (english.equalsIgnoreCase("7")){
System.out.print("--... ");
}
if (english.equalsIgnoreCase("8")){
System.out.print("---.. ");
}
if (english.equalsIgnoreCase("9")){
System.out.print("----. ");
}
if (english.equalsIgnoreCase("0")){
System.out.print("----- ");
}
}
}
经过多次尝试尝试不同的lops和条件后,我无法解决我的程序只能翻译一个字符的问题。如果我输入多个,它会终止。如果有人能够引导我走上正确的道路,找出如何循环这些if语句,直到翻译完所有字符,我将非常感激。
答案 0 :(得分:3)
使用HashMap
代表翻译:
HashMap<Character , String> char_to_morse = new HashMap<>();
char_to_morse.put('A' , ".- ");
//put all other chars in the map here
//retrieving a code:
System.out.print(char_to_morse.get(someChar));
答案 1 :(得分:1)
成功检索用户输入词后,您可以迭代该词。看看toCharArray。根据文档,它
将此字符串转换为新的字符数组。
所以你的代码如下所示:
for (char c : english.toCharArray()){
if (c == 'A'){
System.out.print(".- ");
}else if (c == 'B'){
//etc...
}
}
请注意以下事项:
.equals
上致电char c
,因为它是原始的答案 2 :(得分:0)
我会用这个
char[] ca = english.toCharArray();
然后你可以循环
for (char c : ca) {
//... your code
}
并进一步改进使用c
上的切换语法ES。
switch (c) {
case 'A':
System.out.print(".- ");
break;
default:
break;
}
答案 3 :(得分:0)
我认为这就是你要找的东西:
Scanner sc = new Scanner(System.in);
String english;
while (sc.hasNext()){ //While there is another token in Scanner
english = sc.next(); //Give the next token to english variable
// Your code with the ifs
}