帮忙做一下, java中不是没有二进制嘛?

myitpro 2007-10-13 05:17:23
编写一个完整程序。实现从键盘输入一个十进制的正整数。利用栈的基本操作将此十进制的正整数转化成二进制的数据。并将其结果输出
...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyfish10000 2007-10-14
  • 打赏
  • 举报
回复
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();
}
}
编译通过,没有什么问题。
网络咖啡 2007-10-14
  • 打赏
  • 举报
回复
使用除2取余法,每次把得到的余数放在栈里,最后一个得到的余数是二进制的高位数字,所以把栈中的数据依次弹出即是要求的二进制数字
ninesea 2007-10-14
  • 打赏
  • 举报
回复
楼上正解
fantee 2007-10-13
  • 打赏
  • 举报
回复
回复zbl0201:
JAVA新增的特性:泛型数组列表
zbl0201 2007-10-13
  • 打赏
  • 举报
回复
ArrayList<Integer> numArray = new ArrayList<Integer>();

这是什么意思 我不懂这个语法< >
qybao 2007-10-13
  • 打赏
  • 举报
回复
利用栈的操作
一下代码没测试过,有问题自己调试吧
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();
}
}
}
iskyshop 2007-10-13
  • 打赏
  • 举报
回复
可以使用系统函数:
java.lang.Integer这个API包中有进制转换的函数 
public static String toBinaryString(int i)


也可以自定义函数:

*/
package review;

/**
* 导入相应的包类
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class ToBinaryString {

/**用于连接所有计算出来的二进制字符,以字符串形式存储*/
String BinaString;

/**
* 构造方法
*/
protected ToBinaryString(){

}

/**
* 此方法用于计算二进制
* @param num 为要转换成二进制的数
*/
public String toBinaString(int num){

/**定义一个ArrayList对象用于存储每一位计算出来的二进制数*/
ArrayList<Integer> numArray = new ArrayList<Integer>();

/**
* 计算每一位二进制数
*/
while(true){

numArray.add( num % 2 );

if(num==0) break;

num = num / 2;

}

/**倒序排列计算出的二进制数,并将其转换成字符形式连接在一起*/
for(int i=numArray.size()-1;i>=0;i--){

BinaString += String.valueOf(numArray.get(i));
}

return BinaString.substring(5);//以二进制字符串形式返回计算的结果
}

/**
* 此方法用于显示信息
*/
public void display(){

/**定义一个十进制数*/
int num10;

System.out.print("请输入要转换的十进制数:");

/**从键盘输入*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

try {

String str = br.readLine();//读取一个文本行

num10 = Integer.parseInt(str);//转换成 int 型并赋值给 num10

System.out.println("十进制为:" + num10);

/**调用 toBinaString 方法转换成二进制*/
String num2 =toBinaString(num10);

System.out.print("转换成二进制为:" + num2);

} catch (IOException e) {

/**抛出异常*/
System.out.println(e);
}


}

/**
* 程序的唯一入口点 main 方法
* @param args 传递至 main 的参数
*/
public static void main(String[] args) {

ToBinaryString newNum = new ToBinaryString();

newNum.display();

}
}


62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧