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();
}
}
[위 코드의 실행 파일]
ps) 후기.
처음에는 스택을 구현하기 위해 스택 클래스를 만들었습니다. 그리고 스택을 이용해서 진수변환을 시키는 프로그램을 만들어볼까 해서 입력받는 클래스도 따로 만들어서 스택을 상속시켜서 만들었지만, 진법변환시키는 프로그램에 상속까지 쓰는건 과하다는 생각이 들어서 그냥 한 클래스로 묶어서 코딩했습니다.
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
데이터베이스에 SQL문을 수행하고 결과 얻기 (0) | 2009.01.13 |
---|---|
DriverManager 객체와 Connection 객체 (0) | 2009.01.13 |
JDBC를 사용하여 데이터베이스와 연결하는 방법 (0) | 2009.01.12 |
애플릿(Applet)이란? (0) | 2009.01.07 |
계산기 프로그램 (0) | 2008.11.19 |