【JAVA】请问为什么我的代码这样写就运行不了呢?求大神指点

如下是我的代码:
import java.util.Scanner;

public class pta {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();
        int sum=0;
        do{
            while (num%2==0){
                num=num/2;
                sum++;
            }while (num%2!=0){
                num=(num*3+1)/2;
                sum++;
            }
        }while (num!=1);
        System.out.println(sum);
    }
}

 

然后答案是这样的:

import java.util.Scanner;

public class Main {
public static void main(String[] args){
    Scanner scanner=new Scanner(System.in);
    int num=scanner.nextInt();
    int sum=0;
    while (num!=1){
        if (num%2==0){
            num=num/2;
            sum++;
        }else if (num%2!=0){
            num=(num*3+1)/2;
            sum++;
        }
    }
System.out.println(sum);
}
}

我的运行不了,菜鸟求问为什么

我很无语

一下子用了3个while,服了,你在用循环之前就要考虑写的会不会陷入死循环,有没有必要用这么多个while

举个例子,num输入1,会死循环了,3个while轮流走个遍。。。。

我知道用太多while不合适。。输入1确实会死循环但是输入其他数字呢?为啥也跑不了?

写代码 花里胡哨了不好,

像你这句说的,你明知道你用了很多while,其实你想写的程序很简单,而你非得搞得复杂。所以别陷入死胡同,在某些时候代码是活的,人也是活的

一样的道理,都是死循环了

谢谢大佬们的指点,我懂了

 

兄弟,路别走窄了,人家是想办法把复杂问题简单化,你是把简单问题复杂化