输入8为什么n=4时直接跳出循环
System.out.println("请输入一个正整数:");
Scanner a = new Scanner(System.in);
int n = a.nextInt();
for(int k=2;k<=n/2;k++){
if(n%k==0){
System.out.print(k+"*");
n= n/k; //把n重新定值
k=2; //让for循环重新执行
}
//System.out.print(n);
}
System.out.print(n);
你下面在for循环中把k重新赋值等于2,但是你上面还有也就是在for循环条件里还有一个k++所以才会在n=4时输出
你要理解for循环的含义,你在for循环里面强制让K回到初始值,以为这样就能无限循环了,想法是正确的,但是在第一次执行完一层for后,虽然K又被置2,
但是再次走到for()的时候不是又被加1了么,变成了奇数,不满足了if条件,所以只执行一次。问题出在k=2上,如果写成k=1,那么就真的循环2次了。
你看下面的代码:
public class Test6 {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner a = new Scanner(System.in);
int n = a.nextInt();
for(int k=2;k<=n/2;k++){
if(n%k==0){
System.out.print(k+"*");
n= n/k; //把n重新定值
k=1; //让k=1,加1变成2,可以执行2次
}
}
System.out.print(n);
}
}
输出结果:
请输入一个正整数:
8
2*2*2