码迷,mamicode.com
首页 > 编程语言 > 详细

【java】oj1473——二进制转换

时间:2015-02-24 23:18:42      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

   最近在准备研究生的复试,在九度上刷题,博主是考得北邮研究生,水平比较菜,算法基本不咋样,随便写写自己敲代码过程中出现的各种情况和未解的问题。

   part1:思路

     十进制转换为二进制,无非是除二取余,然后将余数倒着输出。为了确定输出二进制的位数,对输入的数据取对+1,得出需要除以2的次数,也就是余数的位数,即二进制的位数。

    得出二进制的位数之后,显然好做很多,用循环将除二取余的数输入数据,再用循环输出即可。

  part2:代码

   

import java.util.Scanner;


public class by20120101 {

    public static void main(String[] args)
    {
        System.out.println("input n:");
        int n;
        Scanner cin = new Scanner(System.in);
        n=cin.nextInt();
        
        int numbers [] = new int [n];
        //输入n个元素
        for (int i=0;i<n;i++)
        {
           numbers[i]=cin.nextInt();    
        }
        
        for (int i=0;i<n;i++)
        {
          change(numbers[i]);
          System.out.println();
        }
    }
    
    //转为二进制算法
    public static void change(int a)
    {                               
      
        int c=(int)(Math.log(a)/Math.log(2)+1);
        int[] numbers =new int [c];//存二进制的数组
       //算法主体    
        
        for(int i=c;i>0;i--)
        {
            numbers[i-1]=a%2;
            a=a/2;
        }
        for(int j=0;j<c;j++)
        {
            System.out.print(numbers[j]);
        }
        
    }
}

part3:总结   

   这个程序能在eclipse中跑,但是提交九度oj后,却显示的Runtime error,我也不清楚哪里出错了,但是觉得方法还是不太好,应该可以改进,尽量不要算出二进制数的位数。希望有高手看到这篇文章,能够提供些帮助,多谢!

【java】oj1473——二进制转换

标签:

原文地址:http://www.cnblogs.com/lycywcy/p/4298988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!