Java 在循环中将变量重置为零
我有一个代码,它允许我取一个字符串,用一个递增的数字替换所有元音 例如,“ababababababa”会给我“0b1b2b3b4b5b6b7b8b9b10b11”。我试图保留它,以便数字一旦超过9,就会重置为零并重新开始计数(因此“0b1b2b3b4b5b6b7b8b9b10b11”将改为“0B1B2B3B4B5B6B7B9B0B1”) 我想不出一种在循环中做这件事的方法,这种方法不是很复杂。如果有人不介意透露实现这一点的方法,我们将不胜感激Java 在循环中将变量重置为零,java,Java,我有一个代码,它允许我取一个字符串,用一个递增的数字替换所有元音 例如,“ababababababa”会给我“0b1b2b3b4b5b6b7b8b9b10b11”。我试图保留它,以便数字一旦超过9,就会重置为零并重新开始计数(因此“0b1b2b3b4b5b6b7b8b9b10b11”将改为“0B1B2B3B4B5B6B7B9B0B1”) 我想不出一种在循环中做这件事的方法,这种方法不是很复杂。如果有人不介意透露实现这一点的方法,我们将不胜感激 public static String getNu
public static String getNumberString( String s)
{
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for( c = 0; c <= word.length(); c++)
{
word2 = word2.replaceFirst("@", Integer.toString(c));
}
return word2;
}
公共静态字符串getNumberString(字符串s)
{
字符串字=s;
字符串word1=word.replaceAll(“[AEIOUaeiou]”,“@”);
int c=0;
字符串word2=word1;
对于(c=0;c尝试使用模10。它将循环使用,因为当它达到10的倍数时,模将再次为0。您可以使用c%10
您可以使用模10(%10)
,这将把计数包装在第九位之后,以重新开始
public static String getNumberString(String s) {
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for (c = 0 ; c <= word.length() ; c++) {
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
}
return word2;
}
您可以使用不同于c
的变量作为循环,通过使用和if条件,您可以检查c
何时变为9
并将其重置为0
public static String getNumberString( String s)
{
String word = s;
String word1 = word.replaceAll("[AEIOUaeiou]", "@");
int c = 0;
String word2 = word1;
for(int i = 0; i <= word.length(); i++)
{
word2 = word2.replaceFirst("@", Integer.toString(c));
if(c == 9) {
c = 0;
} else {
c++;
}
}
return word2;
}
公共静态字符串getNumberString(字符串s)
{
字符串字=s;
字符串word1=word.replaceAll(“[AEIOUaeiou]”,“@”);
int c=0;
字符串word2=word1;
对于(inti=0;i如何使用模
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
在你的循环中,你可以
for (c = 0; c <= word.length(); c = (c + 1) % 10) {...}
对于(c=0;c我会使用。您可以使用%10
来确保计数在第九位之后。另外,我会使用StringBuilder
。类似
public static String getNumberString(String str) {
int count = 0;
StringBuilder sb = new StringBuilder();
if (str != null) {
for (char ch : str.toCharArray()) {
switch (Character.toLowerCase(ch)) {
case 'a': case 'e': case 'i': case 'o': case 'u':
sb.append(count);
++count;
count %= 10;
// or maybe, count = (count > 9) ? 0 : count;
break;
default:
sb.append(ch);
}
}
}
return sb.toString();
}
然后你可以像这样测试它
public static void main(String[] args) {
String out = getNumberString("abababababababababababa");
String expected = "0b1b2b3b4b5b6b7b8b9b0b1";
System.out.println(out.equals(expected));
}
输出为
true
必须使用c%10而不是c,如下代码:
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
它必须是递增的,还是随机的?应该是c>9@ankur-singhal,c==9的问题是什么?效果很好。非常感谢。非常感谢。我觉得没有想到这一点很傻。效果很好。还有41秒:P
word2 = word2.replaceFirst("@", Integer.toString(c % 10));