刚学java,输入数字后,回车没反应

import java.util.Scanner;

//二进制转十进制
public class Test09 {
    public static void main(String[] args) {

        //输入二进制数字
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();

        int i = 0;
        int sum ;
        int x = 0;

        if (num%10==1){
            sum = 1;
        }else{
            sum = 0;
        }

        while (num>0){
            x = num%10;
            i++;
            if (x==1){
                sum = sum+2^i;
            }else{
                sum+=0;
            }
        }
        System.out.println(sum);


    }
}
  while (num>0){
            x = num%10;
            i++;
            if (x==1){
                sum = sum+2^i;
            }else{
                sum+=0;
            }
        }

这个循环里没有把num做改变。就进入了死循环。

看你的意思是想把输入的数据做为2进制求出值。

所以在这个循环里面应该加上 num /= 10;

while (num>0){

x = num%10;

i++;

if (x==1){

sum = sum+2^i;

}else{

sum+=0;

}

num /= 10;

}

你的while 循环条件是num>0,但是里面的num却没有改动,这样会死循环

你的while没有终止条件,

while (num>0){
            x = num%10;
            i++;
            if (x==1){
                sum = sum+2^i;
            }else{
                sum+=0;
            }
num=num/10;//终止条件
        }

只要num不为负数就会死循环了。

看不明白你在循环里面做做什么,num的值不做任何改变,也没break之类的跳出语句

只要你输入的是正数,while (num>0){
            x = num%10;
            i++;
            if (x==1){
                sum = sum+2^i;
            }else{
                sum+=0;
            }
        }这一块会进入一个死循环,可以写一个sum等一某一个值时跳出循环或者直接在while (num>0){
            x = num%10;
            i++;
            if (x==1){
                sum = sum+2^i;
            }else{
                sum+=0;
            }

break;
        }就可以!

我估计是死循环了

 

感谢采纳我的回复,对你有帮助的话,关注下我的博客呗,我会持续发技术文章。