题目:将一个十进制数n转换成二进制数。
解题思路:十进制数转换为二进制,可以采用辗转相处、取余数的方法得到。例如十进制数11转二进制数。先求余数11%2=1,求商11/2 = 5,然后用商5再求余数,求商,直到商为0,结束。
11%2 = 1 11 / 2 = 5
5%2 = 1 5 / 2 = 2
2%2 = 0 2 / 2 = 1
1%2 =1 1/ 2 = 0
代码如下:
package com.guigu.stack;
import java.util.Scanner;
import java.util.Stack;
public class BinaryChangeDemo {
public static void main(String[] args) {
Stack stack = new Stack(); // 初始化一个栈
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要转换的数:");
int n = scanner.nextInt();
// 调用方法
bianryChange(n, stack);
}
// 定义一个转换方法
public static void bianryChange(int n, Stack stack) {
while(true) {
if(n == 0) { // 商为0时退出
break;
}
stack.push(n % 2); // 将每次的余数进栈
n /= 2; // 更新n的值
}
// 输出结果
System.out.print("n所对应的二进制数为:");
while(!stack.empty()) {
System.out.print(stack.pop());
}
}
}