我是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++;
}
}}
答案 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();