0

在开始之前,我是一个新手程序员,只做了一天左右。

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

import java.util.Scanner;

公共类莫尔斯翻译{

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

}

}

4

2 回答 2

1

您可以在if(s) 之前添加一个循环。而且由于您使用的是Scanner.next()我建议使用Scanner.hasNext()作为循环条件。就像是,

while (sc.hasNext()) {
    String morse = sc.next();
    // ...
}
于 2015-10-03T00:16:20.077 回答
1

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

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

于 2015-10-03T00:28:03.767 回答