java循环分解质因数问题,求解答

输入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