Java 对于要考虑哪个值的循环混淆
我这里有一个循环:Java 对于要考虑哪个值的循环混淆,java,for-loop,while-loop,Java,For Loop,While Loop,我这里有一个循环: while(n != 0) { ld = n % 10; System.out.println(ld); for ( i=1; i <= ld; i++) { f = f * i; } System.out.println(f); n /= 10; } while(n!=0) { ld=n%10; 系统输出打印项
while(n != 0)
{
ld = n % 10;
System.out.println(ld);
for ( i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
while(n!=0)
{
ld=n%10;
系统输出打印项次(ld);
对于(i=1;i而言,问题不在于ld
。在每次迭代中,您忘记重置f
while(n != 0)
{
ld = n % 10;
System.out.println(ld);
f = 1; // reset f
for ( i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
问题不在于ld
。您忘记了在每次迭代中重置f
while(n != 0)
{
ld = n % 10;
System.out.println(ld);
f = 1; // reset f
for ( i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
使用完一个数字后,您需要重置f
。
在while循环中输入时添加f=1;
解决方案
while(n != 0)
{
ld = n % 10;
f = 1;// add this
System.out.println(ld);
for (int i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
while(n!=0)
{
ld=n%10;
f=1;//添加这个
系统输出打印项次(ld);
对于(int i=1;i您需要在使用一个数字后重置f
。
在while循环中输入时添加f=1;
解决方案
while(n != 0)
{
ld = n % 10;
f = 1;// add this
System.out.println(ld);
for (int i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
while(n!=0)
{
ld=n%10;
f=1;//添加这个
系统输出打印项次(ld);
对于(inti=1;i最重要的:
现在我们的循环每次“重复”都会将f重置为1
其他:
在for循环中添加了int i=1
您可以使用f*=1;
代替f=f*1;
为了更安全,将n!=0更改为n>0
而(n>0)
{
ld=n%10
System.out.println(ld);
f = 1;
for(int i = 1; i <= ld; i++)
{
f *= i;
}
System.out.println(f);
n /= 10;
System.out.println(ld);
f=1;
对于(inti=1;i最重要的:
现在我们的循环每次“重复”都会将f重置为1
其他:
在for循环中添加了int i=1
您可以使用f*=1;
代替f=f*1;
为了更安全,将n!=0更改为n>0
而(n>0)
{
ld=n%10
System.out.println(ld);
f = 1;
for(int i = 1; i <= ld; i++)
{
f *= i;
}
System.out.println(f);
n /= 10;
System.out.println(ld);
f=1;
对于(inti=1;i您可以查看此代码,代码是ok的,只需要为给定数字的每个数字设置循环内f的值
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int ld;
int n=123;
while(n != 0)
{
int f=1;
ld = n % 10;
System.out.println(ld);
for ( int i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
}
}
您可以查看此代码,代码正常,只需在给定数字的每个数字的循环中设置f值
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int ld;
int n=123;
while(n != 0)
{
int f=1;
ld = n % 10;
System.out.println(ld);
for ( int i=1; i <= ld; i++)
{
f = f * i;
}
System.out.println(f);
n /= 10;
}
}
}
分享你的输出,你希望代码做什么你的for循环变得混乱了?你能澄清一下吗?你能澄清一下吗?好吧,我得到了我的答案谢谢大家!旁注:现在已经不是1985年了。绝对没有理由使用单字符作为变量名。给变量名说明它们的含义。然后:始终声明var可以有最小的作用域。意思是:如果你在while循环体中声明了“f”…那么你自己会更容易发现“嘿,f是什么时候初始化的,以及外部循环的后续运行会发生什么”分享你的输出,你希望代码做什么你的for循环变得混乱了?你能澄清一下吗?你能澄清一下吗?好吧,我得到了我的答案谢谢大家!旁注:现在已经不是1985年了。绝对没有理由使用单字符作为变量名。给变量名说明它们的含义。然后:始终声明var可以有最小的作用域。意思是:如果你在while循环体中声明了“f”…那么你自己会更容易发现“嘿,f是什么时候初始化的,以及外部循环的后续运行会发生什么”你太聪明了。太棒了。我已经投票给你的答案,并将在8分钟内接受它。你太聪明了。太棒了。我投票给你的答案,并将在8分钟内接受它。