본문 바로가기
Java

[Java] 명품 자바프로그래밍 제 3장 실습문제 3번

by graygreat 2017. 4. 24.
728x90
반응형


키보드로부터 0보다 큰 임의의 정수를 입력받고 이 정수를 이진수로 출력하고 이진수에 들어있는 1의 개수를 출력하라.


이진수 메소를 사용하지 않고 알고리즘을 이용해 푼 것.


import java.util.*;

public class binary {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        int sum[] = new int[30];
        int digit = 1, count = 0, bin_count = 0;
        System.out.print("0보다 큰 정수를 입력하세요 : ");
        int num = scanner.nextInt();
        
        if(num < 0){
            System.out.println("잘못입력하셨습니다.");
            return;
        }
            
        for (int i = 0; num > 0; i++) {
            sum[i] += num % 2;
            num /= 2;
            count++;
            if (sum[i] == 1)
                bin_count++;
        }

        System.out.print("이진수 : ");
        for (int i = count - 1; i >= 0; i--) {
            System.out.print(sum[i] + " ");
        }
        System.out.println();
        System.out.println("1개의 개수 : " + bin_count);
    }
}




toBinaryString 메소드 사용


import java.util.*;

public class binary2 {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        int count = 0;

        System.out.print("0보다 큰 정수를 입력하세요 : ");
        int num = scanner.nextInt();

        if (num < 0) {
            System.out.println("잘못입력하셨습니다.");
            return;
        }

        String binary = Integer.toBinaryString(num);
        System.out.println("이진수 : " + binary);

        for (int i = 0; i < binary.length(); i++) {
            if (binary.charAt(i) == '1')
                count++;
        }
        System.out.println("1의 개수 : " + count);

    }
}


반응형

댓글