我想知道如何修复我的元音计数器程序,我已经搜索了许多论坛,但没有任何运气。实验室的描述是“将字符串中的所有元音更改为数字。确保数字范围为 0-9,并在计数时将数字重置为 0
我的主要代码是
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;
}
}
跑步者类是
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") );
}
}
我遇到的错误是替换方法。它说“没有找到合适的方法来替换(char,int),方法java.lang.String.replace(char,char)不适用;(参数不匹配;可能从int到char的有损转换)这是我的第一个编程类,所以我真的不知道如何解决这个问题。
编译错误给了你一个线索(参考替换方法上的javadocs)。您正在尝试使用整数替换字符,您需要做的是将元音替换为数字的字符值,如“1”或“2”等。
另外,在字符串上调用replace将返回字符串的新副本,因此即使您正在调用replace,也无法获得所需的效果。这里有点不同(数组、StringBuffers等)
Java String 是不可变的,你没有分配替换
的结果(但我更喜欢 StringBuilder
,因为它是可变的)。接下来,在我看来,使用
开关
在这里更容易阅读。就像每个循环
一样。把它放在一起,它可能看起来像
public static String getNumberString(String s) {
if (s == null || s.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder(s.length());
int counter = 0;
for (char ch : s.toCharArray()) {
switch (Character.toLowerCase(ch)) {
case 'a': case 'e': case 'i': case 'o': case 'u':
sb.append(counter);
counter++;
if (counter > 9) {
counter = 0;
}
break;
default:
sb.append(ch);
}
}
return sb.toString();
}
您正在调用替换为 int 值 - java 不会自动将此 int 转换为字符。您需要将 int 显式转换为人类可读的字符。这是一个快速而肮脏的修复:
更改所有。替换
调用
s = s.replace(g,(counter+"").charAt(0));
您将发现代码中仍然存在其他问题,即使替换已修复。应该工作的代码:
s = s.substring(0,i) + counter + s.substring(i);
这不需要int值的显式转换的原因是因为连接运算符()会为您将其转换为文本。
总结:
>
在Java中,类型不是简单地混合-int!=char</code>,必须告诉编译器如何转换
s.replace
不会导致 s 中的任何内容发生变化,您需要将 s 设置为
s.replace
的结果 - 开始时很难绕开你的头,但你会通过练习得到它
s.replace
将用相同的东西替换该字符串中字母的所有实例,我认为你不想要
本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果
问题内容: 我目前有一个包含字符A,B和C的字符串,例如,该字符串看起来像 其他不包含A,B或CI的随机变量想分别用“ A”,“ B”和“ C”替换A,B和C,这是我目前正在做的最好方法: 问题答案: 如果A,B和C是完全相同的单个字符,cletus的答案就可以正常工作,但是如果它们可以是更长的字符串,而您只是出于示例目的将它们称为A,B和C,则cletus的答案就可以。如果它们是更长的字符串,则
我正在编写一个程序,计算用户输入的句子中元音和辅音的数量。我下面的代码计算元音的数量,但它为辅音计数提供了奇怪的数字。例如,如果我输入“g”,我得到的辅音计数是10。
问题内容: 我在做作业时遇到了这个问题(老实说,至少没有试图隐藏它),在解决该问题时遇到了问题。 给定以下声明:字符串短语=“ WazzUp?-谁在第一时间???-IDUNNO”;编写必要的代码以计算字符串中的元音数量,并将适当的消息打印到屏幕上。 这是我到目前为止的代码: 但是,当我运行它时,它只会产生一堆空白行。有人可以帮忙吗? 问题答案: 应该是。 给出的值,然后加1。就像您现在拥有的一样,
主要内容:replace() 方法,replaceFirst() 方法,replaceAll() 方法在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。repla
我需要将给定字符串中的每个元音替换为同一个元音,后跟字母“v”,再跟上一次元音。例如:<code>bad</code>应该变为<code>bavad</code>,<code>egg</code>变为<code>evegg</code>,<code>doge</code>dovogeve</code>,等等。练习明确指出需要使用<code>String完成。join()方法。到目前为止,我已经想出