java - 用星号替换元音

标签 java string

我有一项作业,必须获取用户输入的名称并将元音转换为星号。我有分配协议(protocol)的这一部分(正如您将在下面的代码中看到的那样),但还有另一部分:如果输入的字符串具有偶数个字符,则第一个字符之间应该有两个而不是一个空格和姓氏。如果是奇数,应该只有一个。我尝试使用 if-else 语句来实现这一点,但它无法正常工作。

如果有帮助,我们将不胜感激。谢谢。

    import java.util.*;
    import java.io.*; // necessary for user input

    public class Prog510a
    {
      public static void main(String[] args)
      {
       Scanner input = new Scanner(System.in);
       System.out.print("Enter your name: ");
       String word = input.nextLine();

       int length = word.length();
       String space = "";
       for(int count = 0; count < word.length(); count ++)
       {
           char c = word.charAt(count);
           if(c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O'
           || c == 'u' || c == 'U')
           {
            String front = word.substring(0, count);
            String back = word.substring(count + 1);
            word = front + "*" + back;
           }
       }
        if (length % 2 == 0)
        {
          space = "  ";
        }
        else
        {
          space = " ";
        }

       System.out.println(word);
      }

} 

最佳答案

嗯,您可能想首先将全名拆分为名字和姓氏。这可以使用 split 函数来完成,该函数返回一个字符串数组:

string[] firstAndLastNames = word.split(" ");

这当然是在替换元音之后完成的,但并非必须如此。

然后您只需获取全名的长度,并适本地分配给 space 变量即可:

if ((firstAndLastNames[0].length() + firstAndLastNames[1].length()) % 2 == 0)
    space = "  ";
else
    space = " ";

然后当你输出它时,执行如下操作:

System.out.println(firstAndLastNames[0] + space + firstAndLastNames[1]);

我还推荐一种用星号替换元音的更好方法,因为它非常困惑。最好创建一个元音数组,并使用 equalsIgnoreCase 函数来替换:

string[] vowels = {"a","e","i","o","u"};
for (int i = 0; i < vowels.length; i++}
    for (int j = 0; j < word.length; j++)
        if (word[j].equalsIgnoreCase(vowel[i]))
            word[j] = "*";

由于您还没有学习数组,您可以使用字符串 replace 函数根据长度将空格替换为一个或两个空格,例如:

if (word.length() % 2 == 0)
    word = word.replace(" ","  ");

你不需要检查它是否奇数,因为它已经有 1 个空格,这就是你想要的。

关于java - 用星号替换元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209240/

相关文章:

java - 为什么我们需要将 toString 方法与 stringbuilder 一起使用

Java lambda 只抛出表达式样式而不是语句样式

java - 将 JSON 对象从 JsonSlurper 转换回附加的 JSONArray - Groovy

java - 在 Android 中设置日历字段

c++ - 在 C++ 中,您将如何对字符串进行排序以使字谜彼此接近?

java - 如何从左到右跟踪和移动字符串?

string - 有没有更好的方法将 "|' 插入二进制字符串rep 以获得这个 10|000|001

java - jboss 服务器上的 war 部署失败

java - 在Hadoop中运行Java类

javascript - 在 JavaScript 中使用字典中的参数