当前位置: 代码迷 >> J2SE >> 帮忙做一下, java中不是没有二进制嘛?该怎么解决
  详细解决方案

帮忙做一下, java中不是没有二进制嘛?该怎么解决

热度:230   发布时间:2016-04-24 13:28:10.0
帮忙做一下, java中不是没有二进制嘛?
编写一个完整程序。实现从键盘输入一个十进制的正整数。利用栈的基本操作将此十进制的正整数转化成二进制的数据。并将其结果输出


------解决方案--------------------
可以使用系统函数:
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取余法,每次把得到的余数放在栈里,最后一个得到的余数是二进制的高位数字,所以把栈中的数据依次弹出即是要求的二进制数字
------解决方案--------------------
楼上正解
  相关解决方案