【问题标题】:Printing userinput with charAt()?用 charAt() 打印用户输入?
【发布时间】:2017-10-17 03:20:49
【问题描述】:

我是 java 初学者,在使用 charAt() 打印用户输入时遇到问题。我需要创建一个程序,该程序接受用户输入并在该文本中的元音之前添加“op”。 (例如:Userinput ->“Beautiful”将被翻译为“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++;
}
}}

【问题讨论】:

  • c = message.charAt(n);
  • 如果代码需要添加"op",我怎么在代码中找不到一个op? --- 要使您的 forif 语句正常工作,请删除这两行末尾的 ;

标签: java char user-input charat


【解决方案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();

【讨论】:

  • 不错,但我觉得作业需要 OP 才能使用 charAt
  • @BrunoDelor 闻起来对我来说就像一个措辞不佳的任务。
  • 非常感谢@ElliottFrisch!
猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 2018-08-05
相关资源
最近更新 更多