深感自己的逻辑思维略差,知识面略窄,于是最近开始着手练习刷nowcoder,提升一下自己。
首先挑一个通过率高的算法题试试,题目是 “ 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数 ”。嗯,首先想到的是对2取余,计数++, 然后没有通过,焦灼...
经查阅,java有一个厉害的方法,Integer.toBinaryString(19934318); 这个方法可以直接将一个int对应的二进制数,然后,你可以遍历该方法返回的二进制String.
完整代码如下:
import java.util.Scanner;
public class Main{
public static void main(String args[]){
int n=0;
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){
int num = sc.nextInt();
String str=Integer.toBinaryString(num);
for (int i = 0; i < str.length(); i++) {
if ('1' ==str.charAt(i)) {
n++;
}else {
continue;
}
}
}
System.out.println(n);
}
}