2017-06-30 3 views
-2

Je dois obtenir une chaîne de mon second tableau (morsecode) mais j'ai besoin de connaître l'index de la lettre que je peux obtenir de mon premier tableau (morse).Je ne peux pas sembler faire fonctionner .indexOf() pour mon tableau de caractères

Ce sont mes tableaux:

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"; 

Et cela me tente d'accéder au tableau et obtenir l'index du char (ces blocs de codes sont mis en boucle):

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

Chaque fois que Je tente de compiler cette erreur vient:

état de sortie 1 demande de membre « indexOf » dans « morse », qui est de type non-char '[27]'

+4

'' morse' est un réseau char', il n'a pas de membres. –

+1

Peut-être que vous devriez faire 'morse' a *' String' * à la place? –

+0

@Someprogrammerdude J'ai changé le morse et la lettre en String. Maintenant, je reçois cette erreur instaure: quitter le statut 1 'demande de membre 'indexOf' dans 'morse', qui est de type non-classe 'String [27]'' –

Répondre

2

morse est un tableau de caractères. indexOf est une méthode de type chaîne (classe).

Vous pouvez essayer ceci:

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); 
} 

Le Morsecode [a - 'a']; est un moyen rapide de retourner la position du caractère ASCII. a = 0, b = 1, etc ...

Bonus, ceci est insensible à la casse