用'_'替换包含元音的字符串

时间:2013-03-13 21:41:16

标签: java

我正在尝试编写一个程序,打印输入的用户字符串,将元音替换为_。由于编译错误,程序无法打印的if部分出现问题。

import java.util.Scanner;
public class mathpowers {
    public static void main(String args[])
    {
        Scanner a = new Scanner (System.in);
        System.out.print("Enter string: ");
        String s = a.nextLine();
        int count = 0;
        for (char c : s.toCharArray())
        {
            if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
            {
                c = '_';
                System.out.println (c[i]);
            }
        }
        System.out.println("Your string has " + count + " upper case letters.");
    }
}

3 个答案:

答案 0 :(得分:1)

System.out.println(c[i]);

应该是

System.out.println(c);

答案 1 :(得分:1)

您的代码存在许多问题,并且无法编译。

  • c[i]替换为ccchar,而非String。 (你甚至没有i ...
  • 您正在打印count,但您永远不会增加它。
  • 即使您计算count,您也会在打印时计算元音而不是大写字母。
  • 您要将"_"分配给c并打印,您的输出将始终为_

也许你想做这样的事情:

Scanner a = new Scanner (System.in);
System.out.print("Enter string: ");
String s = a.nextLine();
String res = "";
for (char c : s.toCharArray())
{
    if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
        res = res + '_';
    }
    else
        res = res + c;
}
System.out.println(res); //Will contain the string with the vowels replaced with _

或..更好的代码:

Scanner a = new Scanner (System.in);
System.out.print("Enter string: ");
String s = a.nextLine();
String[] vals = {"a", "u", "o", "e", "i"};
for(String val : vals)
    s = s.replaceAll(val, "_");
System.out.println(s);

答案 2 :(得分:0)

首先,您需要在第一行的import前面加java.util.Scanner;个关键字。 您还需要在下面的代码中删除额外的{

if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
{ //<- This is not needed as you have another on on the end of the line above
c = '_';
System.out.println (c[i]);
}
}

上面代码中的c char不是数组,因此您只需拨打System.out.println (c);,但您也可以在致电之前将'_'分配给c,以便您#39; ll只打印出_。另一个问题是您只更改s.toCharArray()创建的数组中的值,因此您需要在for循环之前进行此调用,然后在循环之后使用它来创建要分配给{的新字符串{1}}。

最后,你永远不会增加s,所以你上次打印时总会说0,但我想你以后会解决这个问题。

如果您尚未使用EclipseNetBeans等集成开发环境(IDE),我建议您下载一个,因为它会突出显示这些错误,就像文字处理器突出显示拼写错误和语法错误