我知道这种问题在整个StackOverFlow中很常见,但是我的问题更具体。在我的程序中,我使用main()方法,英文到莫尔斯方法工作正常,以及我遇到麻烦的莫尔斯到英语方法。莫尔斯电码到英文:字符类型不能与字符串类型比较
public static void MorsetoString(String Morse, char [] Alphabet, String [] MorseCode){
StringBuffer English = new StringBuffer();
for(int i=0;i < Morse.length(); i++){
if (Morse.charAt(i) != ' '){
for (int j = 0; j < MorseCode.length; j ++){
if (Morse.charAt(i) == MorseCode[j]){
English.append(MorseCode[j]);
English.append(" ");
}
}
}
}
}
这些是作为参数在这个方法的数组:
char Alphabet [] = {'a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '};
String MorseCode [] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "..-", ".--", "-..-", "-.--", "--..", "|"};
的代码没有完全做到,因为我必须添加语句时Morse.charAt(i) == ' '
,但我主要有这部分麻烦。
此代码的问题是,当我说if (Morse.charAt(i) == MorseCode[j])
,我比较字符型变量字符串类型,所以程序不编译。我认为我的代码在逻辑上总体上工作,但是有什么方法可以修改代码,以便将两者进行比较?确切的错误信息是“
莫尔斯参数的值是什么样的我怀疑你只是比较每个莫尔斯码的第一个字符源代码,在你的'MorseCode'数组中使用整个莫尔斯码。 –
请注意''Morse.charAt(i)'返回一个字符。如果字符串'Morse'包含'。-.-',那么'charAt(0)'只返回单个点。您的代码将以“e”和“o”字符串的形式解码任何一串点和破折号。例如,输入'-.-。 --- ..“你可以将它解码为”oeoe ooo ee“。你需要重新思考你的方法。 –
作为吉姆说,如果没有停止呼叫您的莫尔斯参数..它可以分析许多不同的结果 – Saltuk