gpt4 book ai didi

java - 在 String Java 中替换元音计数器

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:36 24 4
gpt4 key购买 nike

我想知道如何修复我的元音计数器程序,我搜索了很多论坛但都没有成功。该实验室的描述是“将字符串中的所有元音更改为数字。确保数字范围为 0-9,并在计数 > 9 时将数字重置为 0。”因此,示例输入为“abcdef”,示例输出为“0bcd1f”。

我的主要代码是

public class VowelCounter
{
public static String getNumberString(String s)
{
int counter = 0;
for(int i = 0; i<s.length(); i++)
{char g = s.charAt(i);
if(g =='a')
{
counter++;
s.replace(g,counter);
}
else if(g =='e')
{
counter++;
s.replace(g,counter);
}
else if(g =='i')
{
counter++;
s.replace(g,counter);
}
else if(g =='o')
{
counter++;
s.replace(g,counter);
}
else if(g =='u')
{
counter++;
s.replace(g,counter);
}
else if(g =='A')
{
counter++;
s.replace(g,counter);
}
else if(g =='E')
{
counter++;
s.replace(g,counter);
}
else if(g =='I')
{
counter++;
s.replace(g,counter);
}
else if(g =='O')
{
counter++;
s.replace(g,counter);
}
else if(g =='U')
{
counter++;
s.replace(g,counter);
}
}
return s;
}
}

Runner 类是

public class VowelCounterRunner
{
public static void main ( String[] args )
{
System.out.println( VowelCounter.getNumberString("abcdef") );
System.out.println( VowelCounter.getNumberString("hhhhhhh") );
System.out.println( VowelCounter.getNumberString("aaaaaaa") );
System.out.println( VowelCounter.getNumberString("catpigdatrathogbogfrogmoosegeese") );
System.out.println( VowelCounter.getNumberString("hhhhhhh1234356HHHHDH") );
System.out.println( VowelCounter.getNumberString("AEIOUaeiou87878alkjdaslwlejrlajflawjkflwj") );
System.out.println( VowelCounter.getNumberString("") );
System.out.println( VowelCounter.getNumberString("x") );
System.out.println( VowelCounter.getNumberString("e") );

}
}

我遇到的错误是替换方法。它说“找不到适合 replace(char,int) 的方法,方法 java.lang.String.replace(char,char) 不适用;(参数不匹配;从 int 到 char 的可能有损转换)这是我的第一堂编程课,所以老实说,我对如何解决这个问题一无所知。

最佳答案

您正在用一个 int 值调用 replace - java 不会自动将此 int 转换为字符。您需要将 int 显式转换为人类可读的字符。这是一个快速而肮脏的修复:

将所有 s.replace 调用更改为

s = s.replace(g,(counter+"").charAt(0));

您会发现您的代码中仍然存在其他问题,即使替换已修复。应该工作的代码:

s = s.substring(0,i) + counter + s.substring(i);

不需要显式转换 int 值的原因是连接运算符 (+) 会为您将其转换为文本。

总结:

  • 在 Java 中,类型不是简单的混合 - int != char,你必须告诉编译器你希望它如何转换

  • s.replace 不会导致 s 中的任何内容发生变化,您需要将 s 设置为 的结果>s.replace - 刚开始的时候有点难以理解,但你会通过练习掌握它

  • s.replace 将用相同的东西替换该字符串中某个字母的所有实例,我认为您不希望这样做

关于java - 在 String Java 中替换元音计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com