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

输入完成后,如何使程序继续读取输入?对于下面的代码,这是给英语翻译人员的莫尔斯电码,例如当我输入莫尔斯电码时,我试图制作莫尔斯电码,它给了我正确的输出A。但是当我结合莫尔斯电码时,例如。 ...,应为AB,else语句将激活。我该怎么办?

import java.util.Scanner;


公共类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.");

}


}

最佳答案

String.equals()会比较完整的字符串,因此.--...永远不会等于.-,因此您需要的是使用String.indexOf()在摩尔斯字符串中“查找”

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


现在,您需要“减去”或从莫尔斯弦中取出这两个字符,并使用循环重复搜索。

 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
 }
 ...


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

10-03 00:38