【发布时间】:2015-04-11 01:13:58
【问题描述】:
我最近有一项任务是将英语转换为摩尔斯电码并将摩尔斯电码转换为英语。输入摩尔斯电码时,我的老师希望单个字母用 1 个空格分隔,单词用“|”分隔。例如 - ---- | -...是“成为”。我能够让英语到莫尔斯语完美地工作,但我对莫尔斯语到英语一无所知。我不知道如何让 for 循环在正确的点停止并将其与数组中的代码之一匹配。
顺便说一句,我的老师不喜欢 Scanner,所以他使用自己的输入系统。我熟悉他的方法,因此避免使用 Scanner 将不胜感激
public class Project1
{
public static void main( String [] args )
{
String morse[] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..",
"--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",
"|",".---","..---","...--","....-",".....","-....","--...","---..","----.","-----"};
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890";
String inputType = new String();
inputType = Input.getString( "Is your phrase in Morse Code or English? Enter 'morse' for Morse Code and 'english' for English" );
if( inputType.equalsIgnoreCase("morse") )
morseToEnglish(alphabet, morse);
else if( inputType.equalsIgnoreCase("english") )
englishToMorse(alphabet, morse);
else
System.out.println("Your entry is invalid");
}
public static void englishToMorse(String alphabet, String morse[])
{
String phrase = Input.getString("Enter your english phrase.");
phrase = phrase.toUpperCase();
for( int i = 0; i < phrase.length(); i++ )
{
if( phrase.charAt(i) == ' ' )
{
System.out.print("| ");
continue;
}
for( int j = 0; j < alphabet.length(); j++ )
{
if( alphabet.charAt(j) == phrase.charAt(i) )
{
System.out.print( morse[j] + " " );
break;
}
}
}
}
public static void morseToEnglish(String alphabet, String morse[])
{
String morseCode = Input.getString("Enter a phrase in morse code.");
for( int i = 0; i < morseCode.length(); i++ )
{
for( int j = 0; j < morse.length; j++ )
{
if ( morse[j] == morseCode.charAt(i))
System.out.print( alphabet.charAt(j) );
}
}
}
}
任何指针将不胜感激。哦,抱歉,如果 morseToEnglish 代码看起来不连贯且糟糕,我尝试了很多不同的方法,但不知所措。
【问题讨论】:
-
使用split()方法,先用
|再用空格。 -
@Jean-François Savard 我不确定是不是他不喜欢,只是他更喜欢自己的方法。
-
@PM 77-1 我不熟悉拆分方法,还有其他方法吗?如果没有,我可以查找拆分方法。
-
您可以将循环更改为 while 循环并手动增加索引。条件为
i < morseCode.length()、charAt (i) != '|'和charAt(i) != ' '。在内循环内将字符追加到String morseletter并在内循环后翻译。 -
@Jean-François Savard 不,会弹出一个对话框,其中显示一条消息和一个要输入的空间。这样对学生来说更直接