如何循环这些if语句?

时间:2015-10-03 17:01:36

标签: java loops if-statement

我对编程很陌生,在不使用整数时无法理解循环。我正在努力使英语成为莫尔斯代码翻译,并且到目前为止已经完成了这项工作:

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语句,直到翻译完所有字符,我将非常感激。

4 个答案:

答案 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,因为它是原始的
  • 此实现使用增强的for循环。您可以阅读有关他们的更多信息here

答案 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

}