努力将 for 循环转换为 do..while 循环

Struggling to convert for loop into do..while loop

我正在努力将 for 循环转换为 do..while 循环,这对我来说似乎是一个不必要的练习,但也许它以后会对我有用。我不知道如何重新设计它,我可以很容易地将它放入 while 循环而不是 do..while.

下面是for循环;

    int d;
    int n = 55;

    for (d = 0; n != 0; d++)
    {
        n /= 10;
    }
    System.out.println(d);

感谢任何帮助:)

试试这个:

 int d=0;
 int n = 55;
 do{ 
  n /= 10;
  d++;
 }while(n != 0);
 System.out.println(d);

所有循环都是一样的,基本上他们需要一个condition。在您的情况下,您的情况是 (n!=0)for 循环很好,因为它有 'tidier'。

我认为这样可以:

    int d = 1;
    while ((n /= 10) != 0) {
        d++;
    }

这里有一个没有do..while/while但是一个简单的无限循环(具有最大的灵活性)的解决方案:

int d = 0;
int n = 55;
// loop
while (true) {
    n /= 10;
    d++;
    //break condition
    if (n == 0) {
        break;
    }
}
System.out.println(d);
int d;
int n = 55;

d = 0;
do {
    n /= 10;
    d++;
} while(n != 0)

System.out.println(d);

这样,只计算循环执行次数的 d 变量将以与 for 循环相同的方式更新。

请注意,只有在循环开始时 n 不为 0 时,这才有效。换句话说,如果在第二行代码中将 n 设置为 0,结果将与 for 循环不同,因为 do..while 循环总是至少执行一次,因此 [= 中的输出将是 0 16=] 个案例和 "do..while loop" 个案例中的 1 个。

您可以使用 do...while 循环来实现它,例如

int d = 0;
int n = 55;

do {
    n /= 10;
    d++;
} while (n != 0);
System.out.println(d);

但我建议您使用 Integer.toString(int) 并采用结果 String 的长度,而不是

System.out.println(Integer.toString(n).length());