在循环中将变量重置为零

时间:2014-11-10 01:34:53

标签: java

我有这个代码,允许我取一个字符串并用越来越多的数字替换所有元音。

例如," abababababababababababa"会给我" 0b1b2b3b4b5b6b7b8b9b10b11"。我试图保持它,以便数字一旦超过9,重置为零并重新开始重新计数(这样" 0b1b2b3b4b5b6b7b8b9b10b11"将改为读取" 0b1b2b3b4b5b6b7b8b9b0b1")。

我无法找到一种在不太复杂的循环中做到这一点的方法。如果有某种方法可以实现这一目标,有人不会想到泄露,那将非常感激。

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

8 个答案:

答案 0 :(得分:6)

您可以使用Modulus of 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;
    }

<强>输出

0b1b2b3b4b5b6b7b8b9b0b1

答案 1 :(得分:4)

如何使用modulo?

word2 = word2.replaceFirst("@", Integer.toString(c % 10));

答案 2 :(得分:1)

尝试使用10的模数。它会循环,因为当它达到10的倍数时,模数将再次为0。

答案 3 :(得分:1)

您可以使用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;
}

答案 4 :(得分:1)

在你的循环中,你可以做到

for (c = 0; c <= word.length(); c = (c + 1) % 10) {...}

答案 5 :(得分:1)

你必须使用c%10而不是c,就像这段代码一样:

word2 = word2.replaceFirst("@", Integer.toString(c % 10));

答案 6 :(得分:0)

而不是替换为c,您可以使用c % 10

答案 7 :(得分:0)

我会使用String.toCharArray()。您可以使用% 10确保count在第九位数之后换行。另外,我使用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