如何让程序在 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
}
...
不要忘记循环,直到没有更多数据要处理
在我开始之前,我是一名新手程序员,只做了大约一天。
如何让我的程序在完成输入后继续读取我的输入?对于下面的代码,这是我试图制作的莫尔斯电码到英语翻译器的代码,当我输入莫尔斯时,例如 .-,它会给我正确的输出 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
}
...
不要忘记循环,直到没有更多数据要处理