Java 在循环中将变量重置为零

Java 在循环中将变量重置为零,java,Java,我有一个代码,它允许我取一个字符串,用一个递增的数字替换所有元音 例如,“ababababababa”会给我“0b1b2b3b4b5b6b7b8b9b10b11”。我试图保留它,以便数字一旦超过9,就会重置为零并重新开始计数(因此“0b1b2b3b4b5b6b7b8b9b10b11”将改为“0B1B2B3B4B5B6B7B9B0B1”) 我想不出一种在循环中做这件事的方法,这种方法不是很复杂。如果有人不介意透露实现这一点的方法,我们将不胜感激 public static String getNu

我有一个代码,它允许我取一个字符串,用一个递增的数字替换所有元音

例如,“ababababababa”会给我“0b1b2b3b4b5b6b7b8b9b10b11”。我试图保留它,以便数字一旦超过9,就会重置为零并重新开始计数(因此“0b1b2b3b4b5b6b7b8b9b10b11”将改为“0B1B2B3B4B5B6B7B9B0B1”)

我想不出一种在循环中做这件事的方法,这种方法不是很复杂。如果有人不介意透露实现这一点的方法,我们将不胜感激

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));