2017-06-30 2 views
-2

私は2番目の配列(morsecode)から文字列を取得する必要がありますが、私は最初の配列から得ることができる文字のインデックスを知る必要がありますモールス)。私のchar配列のために.indexOf()が動作しないようです

これらは私の配列です:

char morse[27]={' ','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[27]={",",".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; 
String words[] = "my message"; 

そして、これは私が(コードのこれらのブロックがループしている)配列にアクセスし、文字のインデックスを取得しようとしている:

counter=0; 
char letter = words[counter]; 
letter = toLowerCase(letter); 
int location=morse.indexOf(letter); 
String code=morsecode[location]; 
counter++; 

たびにコンパイルしようとすると、このエラーが出てくる:

終了ステータス1 'morse'のメンバー 'indexOf'のリクエスト非クラス型の 'char [27]'です。

+4

'morse'小文字を区別しない場合があるが、それは任意のメンバーを持っていない、' char'配列です。 –

+1

代わりに 'morse'を' * 'String' *にするべきでしょうか? –

+0

@Someprogrammerdude私はモールスと文字をStringに変更しました。今度は、このエラーが発生しました: 終了ステータス1 ''morse'のメンバ 'indexOf'の非クラス型 'String [27]'であることを要求します。 –

答えて

2

morseはcharの配列です。 indexOfは文字列(クラス)メソッドです。

あなたはこれを試みることができる:

String char_to_morse(char letter) 
{ 
    String morsecode[]={".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; 

    if ((letter >= 'a') && (letter <= 'z')) return morsecode[a - 'a']; 
    else if ((letter >= 'A') && (letter <= 'Z')) return morsecode[a - 'A']; 
    else if (letter == ' ') return "  "; // longer space to see different words 
    else return "ERR"; 
} 

main() { 
    String words[] = "my message"; 

    int i=0; 
    String result; 
    while (words[i]) 
    { 
     result += char_to_morse(words[i]) + ' '; // use space to separate each morse code. 
    } 

    printf(result); 
} 

モールス符号を[ - '']; ASCII文字の位置を返す簡単な方法です。 A = 0、B = 1、等...

ボーナスは、これは

関連する問題