繁体   English   中英

如何循环这些if语句?

[英]How to loop these if statements?

我对编程非常陌生,并且在不使用整数时无法理解循环。 我正在尝试做一个英语到莫尔斯电码的翻译器,到目前为止已经做到了:

import java.util.Scanner;

公共课程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("----- ");
         }


}

}

经过无数次尝试不同条件和条件的尝试之后,我无法解决程序只能翻译一个字符的问题。 如果我输入多个,它将​​终止。 如果有人可以引导我走上正确的道路,弄清楚如何循环这些if语句,直到所有字符都翻译完,我将不胜感激。

使用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));

成功检索用户输入的单词后,便可以遍历该单词。 看一下toCharArray 根据文档,它

将此字符串转换为新的字符数组。

因此您的代码如下所示:

for (char c : english.toCharArray()){
    if (c == 'A'){
        System.out.print(".- ");
    }else if (c == 'B'){
        //etc...
    }
}

请注意以下几点:

  • 您不需要在char c上调用.equals ,因为它是原始类型
  • 此实现使用增强的for循环。 您可以在这里阅读更多有关它们的信息

我会用这个

char[] ca = english.toCharArray();

那你就可以循环

for (char c : ca) {
 //... your code        
}

并使用c上的switch语法来改进更多内容

es。

switch (c) {
 case 'A':
    System.out.print(".- ");
    break;
default:
  break;
}

我认为这是您要寻找的:

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM