[英]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[] 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.