如何让程序在 if 语句完成后继续读取输入(莫尔斯翻译器)

How to get a program to continue reading input after if statements are fulfilled (Morse Translator)

在我开始之前,我是一名新手程序员,只做了大约一天。

如何让我的程序在完成输入后继续读取我的输入?对于下面的代码,这是我试图制作的莫尔斯电码到英语翻译器的代码,当我输入莫尔斯时,例如 .-,它会给我正确的输出 A。但是当我组合莫尔斯字母时,例如 .-- ...,应该是 AB,else 语句激活。我该怎么办?

import java.util.Scanner;

public class MorseTranslator {

public static void main(String[] args) {

     System.out.println("Please enter morse code you wish to translate.");
     Scanner sc =new Scanner(System.in);
     String morse = sc.next();



     if (morse.equals(" ")) {
         System.out.print(" ");
        }
     if (morse.equals(".-")){
         System.out.print("A");
        }
     if (morse.equals("-...")){
         System.out.print("B");
        }
     if (morse.equals("-.-.")){
         System.out.print("C");
        }
     if (morse.equals("-..")){
         System.out.print("D");
        }
     if (morse.equals(".")){
         System.out.print("E");
        }
     if (morse.equals("..-.")){
         System.out.print("F");
        }


     else System.out.println("Please input morse code.");

}

}

您可以在 if(s) 之前添加一个循环。并且由于您使用 Scanner.next() I'd suggest using Scanner.hasNext() 作为循环条件。像,

while (sc.hasNext()) {
    String morse = sc.next();
    // ...
}

String.equals() 比较完整的字符串,所以 .--... 永远不会等于 .- ,所以你需要的是 'look for' 在莫尔斯字符串中,使用 String.indexOf()

 if(morse.indexOf(".-")!=-1){
    System.out.print("A");
    //need more magic here
 }

现在你需要'substract'或从莫尔斯字符串中取出这两个字符,并用循环重复搜索。

 if(morse.indexOf(".-")!=-1){
    System.out.print("A");
    morse=morse.substring(morse.indexOf(".-")+2); // where 2 morse characters
    continue; //your hypothetical loop
 }
 if(morse.indexOf("-...")!=-1){
    System.out.print("B");
    morse=morse.substring(morse.indexOf("-...")+4); // where 4 morse characters
    continue; //your hypothetical loop
 }
 ...

不要忘记循环,直到没有更多数据要处理