是否有一种方法可以计算变量在java字符串中先前声明的次数?
我试图制作一个程序,用一个数字替换任何元音,每当元音出现时从0开始计数,同时使用循环 到目前为止,我所拥有的:是否有一种方法可以计算变量在java字符串中先前声明的次数?,java,Java,我试图制作一个程序,用一个数字替换任何元音,每当元音出现时从0开始计数,同时使用循环 到目前为止,我所拥有的: int num = 0; for (int number = 0; number <= (insert method that returns the number of times num occured in the string here / number of vowels of any type previously seen in the string); numbe
int num = 0;
for (int number = 0; number <= (insert method that returns the number of times num occured in the string here / number of vowels of any type previously seen in the string); number ++)
{
num = number;
}
String word = "AEIOUaeiou87878alkjdaslwlejrlajflawjkflwj";
word = word.replaceAll("A", "" + num).replaceAll("E", "" + num)
.replaceAll("I", "" + num).replaceAll("O", "" + num)
.replaceAll("U", "" + num).replaceAll("a", "" + num)
.replaceAll("e", "" + num).replaceAll("i", "" + num)
.replaceAll("o", "" + num).replaceAll("u", "" + num);
System.out.println(word);
int num=0;
对于(int number=0;number,您的问题是一次替换一个字母的所有实例。您需要为以0开头的元音设置一个计数器,然后在找到一个计数器时将其递增,然后用该计数器和其他非元音字符生成一个字符串
比如说,
public static void vowelReplacer(String word) {
int vowelCount = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
if ("aieou".contains(String.valueOf(Character.toLowerCase(c)))) {
sb.append(vowelCount++);
} else {
sb.append(c);
}
}
System.out.println(sb.toString());
}
最重要的一步是将单词分割成一个数组。然后你可以一步一步地检查你的元音,必要时用int替换字符。如果不是这样,就让字符保持原样
但是如果您有匹配项,请不要忘记将其添加到i
(i++
)
检查元音时,您只需要小写字母,因为我们可以将字符串更改为小写字母进行检查。因此,您的书写量较少。我不清楚您的要求-您要插入的数字是多少?之前看到的任何类型的元音的数量?之前看到的A
s的数量等?不清楚是什么您正在询问。您希望返回什么结果来代替(在此处插入返回字符串中num出现次数的方法)
为什么?只有良好的调试才能帮助您解决这一问题,当然还有明确的要求。以前看到的任何类型的元音的数量我都会从一些较小的用例开始。这将使我能够确保我走上正轨。比如abc->1bc(是吗?),cab->c2b(再次,是吗?),您需要做什么来做到这一点?(你是对的,一个循环;但是什么上的循环?整个字符串,一个子集?)然后看看这些。什么方法能帮助你达到你想要的目的?为他们做OPs作业真的对OP有帮助吗?我不认为有帮助。@mlk-投票否决我会让你感觉更好吗?我至少是想帮你。我不同意你在帮你。我要说你在阻碍OP。他们现在有机会学习。使用定期快车将单个字符
转换为字符串
上的离子匹配器还可以降低读取用于元音测试的if条件的复杂性。即可能是元音匹配(“[aeiouAEIOU]”
。这也可以在不转换为小写的情况下工作
public static void main(String[] args) {
vowelReplacer("AEIOUaeiou87878alkjdaslwlejrlajflawjkflwj");
// 01234567898787810lkjd11slwl12jrl13jfl14wjkflwj
}
public static void main(String[] args) {
String word = "AEIObUaeiou87878alkjdaslwlejrlajflawjkflwj";
replaceVowel(word);
}
private static void replaceVowel(String word){
String[] chars = word.split("");
int i = 0;
StringBuilder replacedWord = new StringBuilder();
for (String oneChar : chars){
if(check(oneChar)){
replacedWord.append(String.valueOf(i));
i++;
}
else{
replacedWord.append(oneChar);
}
}
System.out.println(replacedWord);
}
private static boolean check(String oneChar){
oneChar = oneChar.toLowerCase();
if(oneChar.equals("a")||oneChar.equals("b")){ // ...the rest of your vowels
return true;
}else{
return false;
}
}