2017-11-18 3 views
0

以下のコードは整数を取ってバイナリに変換し、数字の合計を出力することになっています。私が間違っていることを私に説明してもらえますか?整数をバイナリに変換し、数字の合計を出力する

例:

入力 - 15バイナリで

15が "1111" であり、1 + 1 + 1 + 1 = 4つの

出力 - 4

import java.util.*; 
import java.io.*; 
import java.math.*; 


class Solution { 

public static void main(String args[]) { 
    Scanner in = new Scanner(System.in); 
    int X = in.nextInt(); 
    String binary = Integer.toBinaryString(X); 
    int amount = 0; 
    String input = Integer.toString(X); 

    for(int b = 0; b < binary.length(); b++){ 

    if (binary.charAt(b) == 1){ 
     amount++; 
     //System.err.println(binary.charAt(b)); 
    } 


    } 
    System.out.println(amount); 

} 
} 
+1

enougthですか?あなたは何を期待していますか? –

+0

サンプル入力の範囲を指定し、結果として何が起こったかを回答することをお勧めします。そうすれば、論理を歩いたり、テストケースをコンパイルして自分自身で作り上げたりすることなく、問題が明らかになる可能性があるので、質問にすばやく答えることができます。 (または、私が入力していたときに、「@GernotKrostが何を言ったかをより簡潔に「:+1する」) –

答えて

1

文字常に単一であり、一重引用符で書かれています。

1は、Stringから抽出された文字で、一重引用符で囲んでください。ここで

は正しいコードです:

if (binary.charAt(b) == '1'){ 
    amount++; 
} 
0

短いアプローチ:

Scanner in = new Scanner(System.in); 
int X = in.nextInt(); 
String binary = Integer.toBinaryString(X); 
String input = Integer.toString(X) 
System.out.println(StringUtils.countMatches(input, "1")); 
0

バイナリ操作はどうなり

int p = 0b10000000000000000000000000010101; 
    int t = 0; 
    for(int i=0; i<32; i++) { 
     t += p & 1; 
     p = p >> 1; 
    } 
    System.out.println(t); 
関連する問題