2017-11-18 2 views
0

아래 코드는 정수를 취하여이를 2 진수로 변환하고 숫자 합계를 인쇄합니다. 내가 잘못하고있는 것을 나에게 설명해 주시겠습니까?정수를 2 진수로 변환하고 숫자의 합을 인쇄하십시오.

예 :

입력 - 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

? 너는 무엇을 기대 하느냐? –

+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

진 작업 enougth 있습니다

어떻게됩니까
int p = 0b10000000000000000000000000010101; 
    int t = 0; 
    for(int i=0; i<32; i++) { 
     t += p & 1; 
     p = p >> 1; 
    } 
    System.out.println(t); 
관련 문제