2017-10-17 34 views
-2

Je suis un débutant en Java et j'ai du mal à imprimer userinput avec charAt(). J'ai besoin de créer un programme qui prend userinput et ajoute "op" avant les voyelles dans ce texte. (Exemple: Userinput -> "Beautiful" serait traduit par "Bopeautopifopul") J'ai du mal à comprendre comment écrire ceci. Jusqu'à présent, j'ai trouvé ce petit bout de chemin.Impression de l'utilisateur avec charAt()?

import java.util.Scanner; 
public class oplang { 
static Scanner userinput = new Scanner(System.in); 
public static void main(String[] args) { 

    char c ='a'; 
    int n,l; 

    System.out.println("This is an Openglopish translator! Enter a word here to translate ->"); 
    String message = userinput.nextLine(); 
    System.out.println("Translation is:"); 
    l = message.length(); 

    for (n=0; n<l; n++); 
    { 
     c = message.charAt(); 
     if (c != ' '); 
    { 
     System.out.println(" "); 
    } 
    c++; 
} 
}} 
+2

'c = message.charAt (n);' –

+1

https://ideone.com/FoVdYs – shmosel

+2

Si co de doit ajouter '' op '', comment se fait-il que je ne trouve pas un seul' op' dans le code? --- Pour que vos instructions 'for' et' if' fonctionnent, supprimez le ';' à la fin de ces deux lignes. – Andreas

Répondre

1

Je voudrais utiliser une expression régulière , groupe des voyelles - le remplacer par op suivi par le groupement (utiliser (?i) d'abord si elle doit être insensible à la casse). Comme,

System.out.println("Translation is:"); 
System.out.println(message.replaceAll("(?i)([aeiou])", "op$1")); 

Si vous ne pouvez pas utiliser une expression régulière, alors je préfère une boucle for-each et quelque chose comme

System.out.println("Translation is:"); 
for (char ch : message.toCharArray()) { 
    if ("aeiou".indexOf(Character.toLowerCase(ch)) > -1) { 
     System.out.print("op"); 
    } 
    System.out.print(ch); 
} 
System.out.println(); 

Et, si vous devez absolument utiliser charAt, qui peut être écrit comme

System.out.println("Translation is:"); 
for (int i = 0; i < message.length(); i++) { 
    char ch = message.charAt(i); 
    if ("aeiou".indexOf(Character.toLowerCase(ch)) > -1) { 
     System.out.print("op"); 
    } 
    System.out.print(ch); 
} 
System.out.println(); 
+0

bien mais je me sens comme l'affectation nécessite OP pour utiliser charAt –

+0

@BrunoDelor * Smells * comme une mission mal libellée pour moi. –

+0

Merci beaucoup @ElliottFrisch! – CMCK