0

我正在做一个函数,我需要获取用户输入并用用户输入的内容替换数组中的所有元音。这是我的数组:老实说,我不知道我在做什么。

char [] letters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}

我正在考虑在里面做一个嵌套iffor loop但就像我说的那样,我不知道我是否朝着正确的方向前进。

/********************************************************************************
  This function will prompt the user to replace all vowels in the array
********************************************************************************/
public static void replace( char [] letters ){      
    for(int i =0; i < letters.length; i++){
       if(i >= 'A')
        if(i <='Z')
         System.out.println(letters[i]);
        else
          break;        
    }        
}
4

4 回答 4

0

假设用户输入是b,你可以做到这一点:

public static char [] replace(char [] src) {
    String s = new String(src);
    s = s.replaceAll("[aeiouAEIOU]", "b");

    return s.toCharArray();
}
于 2012-10-29T01:06:19.783 回答
0

除了打印出所有大写字母之外,您的循环看起来不会做太多事情。您需要一些代码来显示提示并获取用户输入。您还需要一种方法来测试字符是否为元音。做后者的一种方法是:

if ("AEIOU".indexOf(letter) >= 0) {
    // letter is a vowel
}

如果您还需要处理小写字母,则可以使用"AEIOUaeiou".indexOf(letter)"AEIOU".indexOf(Character.toUpperCase(letter))。这将嵌套循环隐藏在标准 API 函数调用中,从而使您的代码更具可读性和更易于调试。(您可以放心地假设它indexOf是正确编写的。)

对于用户交互,您应该查看System.in使用Scanner. 或者(也许更好),使用 aConsole来管理所有用户 I/O。看看这个教程,看看你是否可以自己解决,如果你遇到困难,请发布另一个问题。

于 2012-10-29T00:56:23.830 回答
0

如果我正确解释了您的问题,您想用用户输入的另一个字符替换 a、e 和 i。

  1. 您正在将索引“i”与字符进行比较,您可能希望将其更改为
if(letters[i] >= 'A') 
if(letters[i] <= 'Z') 
System.out.println(letters[i]); 
else 
break; 

另一件事,如果你想测试它是否是一个元音,你可以像这样将所有的比较 OR 在一起:

if(letters[i] == 'A' ||
   letters[i] == 'E' ||
   letters[i] == 'I' ||
   letters[i] == 'O' ||
   letters[i] == 'U')
letters[i] = users_input
于 2012-10-29T01:00:27.857 回答
0

也许是这样的?

public static void replace( char [] letters )
{      

    Scanner s = new Scanner(System.in);

    for(int i = 0; i < letters.length; i++)
    {

        if ("AEIOU".indexOf(letters[i]) >= 0)
        {
              System.out.println("\nVowel Found, What should it be replaced with?");
              String line = s.read();
              letter[i] = line.charAt(0);
        }
    }

}
于 2012-10-29T01:00:56.043 回答