下面展示代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//这里定义l与r是范围
int l=sc.nextInt();
int r=sc.nextInt();
int a,account=0,b;
//循环因为[l,r]是闭区间所以i<=r
for(int i=l;i<=r;i++) {
//这里令a=i防止while循环的时候发生变化
a=i;
while(a>0) {
//转换为二进制
b=a%2;
if(b==1) {
account++;
}
//这里还在循环里,a为偶数时进行此运算 @.@~
//一直循环直到a=0,不满足循环条件 -.-!
//然后跳出while循环,进行for循环 0.0
a=a/2;
}
}
System.out.println(account);
}
}
我用我的理解注释的,可能有些地方不对,大家如果有疑问可以评论.0.0
这道题与1的个数相类似,链接: 每日算法题(二)1的个数(JAVA).
这是评测结果: