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;
}就可以!
我估计是死循环了
感谢采纳我的回复,对你有帮助的话,关注下我的博客呗,我会持续发技术文章。