这是我的代码。当从两个字符串中删除特定字符时,我需要将i
值再次初始化为零。这里sb
表示用户输入的第一个字符串,sb1
表示用户输入的第二个字符串。当两个字符在比较时相同时,应从两个字符串中删除char,并且i
的值应重新初始化为零,并开始从第一个字符串的第一个字符与第二个字符串的第一个字符进行比较。一切正常,但i
的值不会再次初始化为零,而是会增加。
for (i = 0; i < sb.length(); i++) {
for (j = 0, d = 0; j < sb1.length(); j++) {
if (sb.charAt(i) == sb1.charAt(j)) {
sb.deleteCharAt(i);
i = 0;
System.out.println("the buff=" + sb);
sb1.deleteCharAt(j);
System.out.println("the buff=" + sb1);
break;
}
}
}
答案 0 :(得分:3)
for
循环有四个部分:
初始化
测试
增量
体
前三个是您在()
之后放入if
的三个部分,由;
分隔,第四个当然是循环内的代码块。
他们像这样运行:初始化,测试,身体,增量,测试,身体......
当你的代码在循环体中将i
设置为0
时,这是有效的,但随后增量发生,递增i
。因此,如果您打算这样做,在打开j
循环之前,您需要将i
设置为一个值,以便在增量发生时,它最终为{{1在你的情况下,那是0
。
但总的来说,如果您正在使用索引,-1
可能不是最好的循环结构。在这种情况下,例如,for
可能是更好的选择,我不认为你必须在while
重新开始,这只是当你删除一个字符,您不想增加索引:
0
我不太确定为什么你在循环中有一个循环。你还没有说过循环应该做什么,但我认为你不需要两个循环来做它。
例如,如果目标是从i = 0;
while (i < sb.length()) {
j = 0;
while (j < sb1.length()) {
if (sb.charAt(i) == sb1.charAt(j)) {
sb.deleteCharAt(i);
sb1.deleteCharAt(j);
}
else
{
++j;
++i;
}
}
}
和sb
的开头删除常用字符,则不需要两个循环:
sb1
答案 1 :(得分:0)
将-1设为i
for (i = 0; i < sb.length(); i++) {
for (j = 0, d = 0; j < sb1.length(); j++) {
if (sb.charAt(i) == sb1.charAt(j)) {
sb.deleteCharAt(i);
System.out.println("the buff=" + sb);
sb1.deleteCharAt(j);
System.out.println("the buff=" + sb1);
i=-1;
break;
}
}
}
因此它会在重启时递增并变为零。
答案 2 :(得分:0)
简单地使用while
循环,更改for
循环中的迭代器是一种相当不好的做法(它应该是恒定长度循环)。
int i=0;
while (i < sb.length()) {
for (j = 0, d = 0; j < sb1.length(); j++) {
if (sb.charAt(i) == sb1.charAt(j)) {
sb.deleteCharAt(i);
System.out.println("the buff=" + sb);
sb1.deleteCharAt(j);
System.out.println("the buff=" + sb1);
i=-1; // It will increment few lines lower so we need to make it equal to -1
break;
}
}
++i;
}
答案 3 :(得分:0)
在循环中,你使用后增量运算符。因此,在迭代结束时,它将增加值。这是后期增量的工作原理。因此,将其设为-1将解决您的问题。
for(i = 0; i&lt; sb.length(); i ++){
for (j = 0, d = 0; j < sb1.length(); j++) {
if (sb.charAt(i) == sb1.charAt(j)) {
sb.deleteCharAt(i);
i=-1;
System.out.println("the buff=" + sb);
sb1.deleteCharAt(j);
System.out.println("the buff=" + sb1);
break;
}
}
}
答案 4 :(得分:0)
int z=1;
for (int i = 0; i < 5; i++)
{
if (z == 0)
{
i = 0;
}
for (int j = 0; j < 5; j++)
{
if(condition)
{
z=1;
}
else
{
z = 0;
}
}
}