使用charAt()打印用户输入?

时间:2017-10-17 03:20:50

标签: java char user-input charat

我是java的初学者,在使用charAt()打印userinput时遇到问题。我需要创建一个程序来获取用户输入并添加" op"在该文本中的元音之前。 (例如:用户输入 - >"美丽"将被翻译为" Bopeautopifopul")我正在努力想办法写这个。到目前为止,我已经提出了这一点。

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

1 个答案:

答案 0 :(得分:1)

我会使用正则表达式,对任何元音进行分组 - 将其替换为op,然后进行分组(如果它不区分大小写,请先使用(?i))。像,

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

如果你不能使用正则表达式,那么我更喜欢一个for-each循环,比如

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

而且,如果你绝对必须使用charAt,那就可以写成

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