자바(Java)/JAVA 2SE

10진수를 2진수로 전환하는 프로그램

본클라쓰 2008. 11. 19. 21:19

10진 정수를 입력 받아 2진수를 출력하는 프로그램

 

설명 : 스택 알고리즘을 사용하여 10진수를 2진수로 변환시키는 프로그램

입출력 방법 : JDialog 클래스 사용

 

내용 : 스택 알고리즘을 사용한다. 10진수를 2진으로 변환시키는 방법은 재귀함수, 배열, 역으로 계산하는 방법등이 있지만 그 중에서 스택 알고리즘을 사용하여 2진 변환을 실시

 

알고리즘 코드

 

for( int i = a ; i > 0 ; i /= 2 ){
    int resutl=i%2;
    push(resutl);
}

 

 

                            < 입력 예제 >                                         < 출력 예제 >

 

         

 

 

소스 코드

import java.util.Vector;

import javax.swing.JOptionPane;

 

public class ChangeBinary {
 
    private Vector<Integer> stack;
    private int top;
    private String decimal = null;
    private String binary = null;

   

    public ChangeBinary(){
        stack = new Vector<Integer>();
        top = -1;
        decimal = JOptionPane.showInputDialog("10진수 2진 변환 프로그램 \n 10진 입력 : ");
        binary = "";
    }

 

    /*
     * 설명 : 스택 초기화
     */
    protected void init(){
        stack.removeAllElements();
        top = -1;
    }

 

    protected void push(int d){
        top++;
  
        try{
            stack.add(top, d);
        }catch(Exception e) {
            System.out.println("Push Exception occur!");
        }
    }

 

    protected void pop(){
        top--;
  
        try{
            stack.remove(top);
        }catch(Exception e) {
            System.out.println("Pop Exception occur");
        }
    }


    /* 입력받은 값을 2진수로 구하는 메서드입니다. */
    protected void change(){
  
        int input = Integer.parseInt(decimal);

 

        for(int i = input ; i > 0 ; i /= 2){
            push( i % 2 );
        }

 

        for(int i=top; i>=0; i--){
            binary += stack.get(i);
        }
  
        JOptionPane.showMessageDialog(null, "2진수 = " + binary);
     }

 

    public static void main(String args[]){
  
        ChangeBinary cb=new ChangeBinary();
        cb.change();
  
    }

}

 

[위 코드의 실행 파일]

ChangeBinary.jar

 

 

ps) 후기.

 처음에는 스택을 구현하기 위해 스택 클래스를 만들었습니다. 그리고 스택을 이용해서 진수변환을 시키는 프로그램을 만들어볼까 해서 입력받는 클래스도 따로 만들어서 스택을 상속시켜서 만들었지만, 진법변환시키는 프로그램에 상속까지 쓰는건 과하다는 생각이 들어서 그냥 한 클래스로 묶어서 코딩했습니다.

ChangeBinary.jar
0.0MB