2012-10-30 2 views
0

Je rencontre des difficultés pour créer un tableau qui va changer les voyelles de mon tableau avec ce qu'un utilisateur entre. Un problème qui est survenu est que quand il demande la lettre i je reçois un inputmismatch.Comment remplacer les voyelles dans un tableau char

/****************************************************************************** 
* This function will prompt the user to replace all vowels in the array 
******************************************************************************/ 
public static void replace(char [] letters) 
{ 
    Scanner scan = new Scanner(System.in); 
    System.out.print(" Enter a character for i: "); 
    int S = scan.nextInt(); 

    for(int i = 0; i < letters.length; i++) 
    { 
     if(letters[i] == 'A' || letters[i] == 'E' || letters[i] == 'I') 
     { 
      letters[i]= (char)S; 
      System.out.print(letters); 
     } 
    } 
} 
+5

Lorsque vous posiez votre question (ou en effet chacune de vos six questions précédentes), il y avait une boîte à droite intitulée ** Comment formater **. Ça vaut le coup de lire. Utilisez également le lien ** [?] ** au-dessus de la zone de texte de la question. Ce n'est pas correct de continuer à attendre que d'autres personnes viennent et mettent en forme des choses pour vous. –

+5

Et juste en dessous, il y a un aperçu en direct de ce que vous tapez. Ne postez pas jusqu'à ce que cet aperçu en direct montre un formatage parfait. –

+2

Peut-être 'scanner.next (". ")' - Le point est une [expression régulière] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) qui signifie "un caractère". Plus d'informations sur [javadoc du scanner] (http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()). – ignis

Répondre

2

L'impression d'une matrice n'est pas la même que l'impression d'un type de données primitave. ce que vous avez

System.out.print(letters); 

vous pouvez imprimer le tableau en itérer à travers elle

for(int k =0;k < letters.length;k++){ 
    System.out.println(letters[k]); 
} 

également le scanner demande à l'utilisateur un numéro, il semble que vous voulez vraiment les saisir une lettre

+1

certainement pas l'emplacement de la mémoire. Il n'y a pas de telle chose en Java. –

+0

merci, je suppose que j'ai eu de mauvaises infos :) –

+0

Voir ['Arrays.toString'] (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString (char [])) pour une alternative –

1

Pour lire un seul caractère de l'entrée Scanner vous pouvez simplement utiliser:

char s = scan.next().charAt(0); 

ou

char s = scan.findInLine(".").charAt(0); 

si vous souhaitez simplement consommer un seul caractère.

+1

cela consommera une ligne complète. Pas toujours une bonne idée. –

+0

'next()' consomme toujours un mot entier. –