各路大神好,我是一个编程小小白,所以我估计所提的问题也会很小白,万望各位大神不要鄙视不要生气不要吐槽,我正努力地向各位靠近。
想请大神帮我看看,下面的代码为什么是错的勒?我是真的真的不知道哇。
PS:我有看过CSDN上的文章,但不知道这里能不能这样直接作为问题发表出来,若是不可以,还望告知,我会马上删除的。
题目是
计算机内部用二进制来表达所有的值。一个十进制的数字,比如18,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。
任务是写一个程序,输入一个整数,输出在32位二进制表达下它前导的零的个数。如输入256,输出23.
import java.util.Scanner;
public class Javafirst {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int nummer = in.nextInt();
int amount = 0;
int []a = new int[32];
int i = 0;
int j = 31;
int Quantity = 0;
while(nummer >= 2) {
a[i] = nummer % 2;
nummer = nummer / 2;
i++;
}
while(j >= 0) {
if( a[j] == 1) {
break;
}
j--;
}
Quantity = 32 - j;
System.out.println(Quantity);
}
}
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int nummer = in.nextInt();
int amount = 0;
int []a = new int[32];
int i = 0;
int j = 31;
int Quantity = 0;
while(nummer >= 2) {
a[i] = nummer % 2;
nummer = nummer / 2;
i++;
}
while(j >= 0) {
if( a[j] == 1) {
break;
}
j--;
}
Quantity = 32 - j;
System.out.println(Quantity);
}
}