Java實現查詢輸入整數二進位制中1的個數
阿新 • • 發佈:2019-01-01
題目描述
請實現如下介面
publicstaticint findNumberOf1(intnum)
{
/* 請實現 */
return 0;
}譬如:輸入5 ,5的二進位制為101,輸出2
涉及知識點:
輸入描述:
輸入一個整數
輸出描述:
計算整數二進位制中1的個數
輸入例子:
5
輸出例子:
2
這個題我也是醉了。我覺得很簡單啊,直接toBinaryString,多麼easy。
我的程式碼在eclipse下是正確的,但是在線上編譯ide上出了不結果??OMG。。。。
import java.util.*; public class Main { public static void main(String args[]){ Scanner sc=new Scanner(System.in); int num=sc.nextInt(); System.out.println(findNumberof1(num)); } public static int findNumberof1(int num){ String s=Integer.toBinaryString(num); int count=0; for(int i=0;i<s.length();i++){ if(s.charAt(i)=='1'){ count++; } } return count; } }
好嘛~!!
非要硬寫2進位制是不??來來來,寫嘛
public static int findNumberof1(int num){
int count=0;
boolean flag=true;
while(flag){
if(num%2==1){
count++;
}
num=num/2;
if(num==0){
flag=false;
}
}
return count;}
然後我遇到了一個最無法解決的bug,
怎麼除錯都不對!!線上編譯跟我說程式沒有輸出!!
怎麼可能!怎麼可能!!!
最後實在不行了,我看了一下討論區的程式碼:
import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int n = scan.nextInt(); int count = 0; String str = Integer.toBinaryString(n); char[] cha = str.toCharArray(); for(char c :cha){ if(c=='1'){ count++; } } System.out.println(count); } } }
呵呵,
不是,你要多次輸入,你倒是說明白啊....
又不是不會,但是你得說清楚了不是?!