import java.util.Stack;/**
* 將十進制數轉換為八進制數
*
* @author austin
*/
public class DecimalToOctalConvertor { /**
* @param args
*/
public static void main(String[] args) {
/*
* 接收壹個用戶從通過鍵盤輸入的整數,作為要轉換的十進制數
*/
Scanner reader = new Scanner(System.in);
System.out.print("請輸入要轉換的十進制數:");
int decimalNum = reader.nextInt(); /*
* 采用除8取余,從下至上的算法來計算八進制數:即用進制數除以8,然後將所得余數作為8進制數的低位數,再用所得的商繼續除以8,以此類推,直到商為0為止
* 在這個過程中,每次的余數都需要保存到壹個列表中,而且後添加到列表中的元素要先輸出,即後進先出,因此采用棧結構來處理
*/
Stack<Integer> octalStack = new Stack<Integer>();
int temp = decimalNum;
do {
octalStack.push(temp % 8); // 將除以8所得的余數添加到棧中
temp /= 8; // 計算除以8所得的商
}
while (temp != 0); // 如果商不為0,則繼續計算下去 /*
* 采用後進先出的方式輸入棧中的元素,就得到了所要求的八進制數
*/
System.out.print("八進制:0");
while (!octalStack.isEmpty()) {
System.out.print(octalStack.pop());
}
System.out.println();
}
}