展开全部
package com.baidu.sep28;
import java.util.Scanner;
/**java 实现 输入一个整数字(可以为正数或负数),求其在计算机中32313133353236313431303231363533e78988e69d8331333330363064存储时1的个数。
*
*/
public class CountOne {
public static void main(String[] args)
{
int input = 0;
Scanner in = new Scanner(System.in);//获取控制台输入
do{
System.out.println("请输入一个整数(可以为正数或负数):");
input = in.nextInt();//获取出入 并 传 给input
System.out.println("计算机中存储时1的个数为:"+getOneNumber (input));
}while(input!=0);//输入0 时 结束 (目的是为了 可以多次输入)
}
private static int getOneNumber(int input )
{
int count = 0;//出现的次数 初始化为0
String binary = Integer.toBinaryString(input);//将输入的 整数转换成二进制 字符串形式
int index = -1;//将 索引初始化为-1
while((index =binary.indexOf("1",index+1))!=-1)
{
// 获取 : binary( 整数转换成二进制 字符串)从 index+1 角标开始(包含 index+1) 第一次出新1 的索引 并赋值给index
count ++;//计数器 加一
}
return count;
}
}