编写一个完整程序。实现从键盘输入一个十进制的正整数。利用栈的基本操作将此十进制的正整数转化成二进制的数据。并将其结果输出

解决方案 »

  1.   

    可以使用系统函数:
    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();
      
     }
    }
      

  2.   

    利用栈的操作
    一下代码没测试过,有问题自己调试吧
    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();
            }
        }
    }
      

  3.   

     ArrayList<Integer> numArray = new ArrayList<Integer>();这是什么意思 我不懂这个语法< >
      

  4.   

    回复zbl0201:
    JAVA新增的特性:泛型数组列表
      

  5.   

    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();
    }
    }
    编译通过,没有什么问题。