编写一个完整程序。实现从键盘输入一个十进制的正整数。利用栈的基本操作将此十进制的正整数转化成二进制的数据。并将其结果输出
------解决方案--------------------
可以使用系统函数:
- Java code
java.lang.Integer这个API包中有进制转换的函数 public static String toBinaryString(int i)
------解决方案--------------------
利用栈的操作
一下代码没测试过,有问题自己调试吧
public class StackBinary {
public static void main(String[] args) {
try {
Stack stack = new Stack();
Scanner scanner = new Scanner(System.in);
System.out.print("input an positive integer:");
int num = scanner.nextInt();
//use stack to convert num to binary
while (num>=2) {
stack.push(""+num%2);
num >= 1; // num /= 2;也可以
}
stack.push(num);
//print result
System.out.print("result is: ");
while (statck.size()>0) {
System.out.print(statck.pop());
}
System.out.println();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
ArrayList<Integer> numArray = new ArrayList<Integer>();
这是什么意思 我不懂这个语法< >
------解决方案--------------------
回复zbl0201:
JAVA新增的特性:泛型数组列表
------解决方案--------------------
import java.util.*;
public class DecimalistToBinary
{
public static void main(String[]args)
{
if(0==args.length)
{
System.out.println("您没有输入正整数(int类型)");
System.exit(0);//从用户的角度来考虑,这里不应该退出,应该给用户
//一个重新输入的机会.但为了简化,这里直接退出了
}
try
{
int num = Integer.parseInt(args[0]);
if(num<0)
{
System.out.println("请输入正整数");
System.exit(0);//同前
}
DToB(num);
}
catch(Throwable e)
{
e.printStackTrace();
}
}
public static void DToB(int param)
{
Stack aStack = new Stack();
while(0 != param)
{
int i = param%2;
aStack.push(i);
param = param/2;
}
while(aStack.empty() != true)
{
System.out.print((int)aStack.pop());
}
System.out.println();
}
}
编译通过,没有什么问题。
------解决方案--------------------
使用除2取余法,每次把得到的余数放在栈里,最后一个得到的余数是二进制的高位数字,所以把栈中的数据依次弹出即是要求的二进制数字
------解决方案--------------------
楼上正解