[英]Resetting a variable to zero while in a loop
我有這個代碼,允許我取一個字符串,並用越來越多的數字替換所有元音。
例如,“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;
}
您可以使用Modulus of 10 (% 10)
,這將在第9位之后包裝計數再次開始。
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
使用modulo怎么樣?
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
嘗試使用模數十。 它將循環通過,因為當它達到十的倍數時,模數將再次為0。
您可以使用除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;
}
在你的循環中,你可以做到
for (c = 0; c <= word.length(); c = (c + 1) % 10) {...}
您必須使用c%10而不是c,如下代碼:
word2 = word2.replaceFirst("@", Integer.toString(c % 10));
而不是用c替換你可以使用c % 10
我會使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.