黑马程序员技术交流社区

标题: 二进制转十进制 [打印本页]

作者: duanqichao    时间: 2016-11-25 22:53
标题: 二进制转十进制
键盘录入二进制数,然后经过程序的执行后,输出该二进制数所对应的十进制整数 。(例如:键盘录入        1001010          控制台输出      74   )大家觉得这道题该从哪里入手呢?在输入任意一个二进制数字的前提下怎么把一个二进制的数字的每一位拆分出来?

作者: duanqichao    时间: 2016-11-26 00:12
做出来了,但是觉得还是有点复杂,想看看大家用纯粹的算法该怎么做。。。。。
[Java] 纯文本查看 复制代码
import java.util.Scanner;
class Test6 {
        public static void main(String[] args) {
                 binToDex( );
        }

        private static  void  binToDex( ){
      Scanner sc  = new Scanner(System.in);
      int  temp =  sc.nextInt() ;
      String strTemp =  temp+""  ;
      int  len = strTemp.length() ;
      int  result = 0 ;
      String[]str = new String[len];
      int [] arr = new int[len ];
      int i = 0;
      for( i = 0 ; i <len  ; i++){
        str = strTemp.charAt(i)+"";
      
      }
      for(int j = 0; j<str.length ; j++){
             arr[j] = Integer.valueOf(str[j]);             
      }
      for ( int k = 0 ; k <arr.length ; k++){
              result +=  arr[k]*((int)Math.pow(2, len-1));       
              len--;
      }   
      System.out.println(result);
   

        }



}

作者: 华阿图    时间: 2016-11-26 13:09
帮你整理了一下代码:
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                String line = sc.nextLine();
                int arr[] = new int[line.length()];
                for (int i = 0; i < arr.length; i++) {
                        arr = Integer.parseInt(line.charAt(i) + "");
                }
                int result = 0;
                int len = arr.length;
                for (int i = 0; i < arr.length; i++) {
                        result += arr * Math.pow(2, len - 1);
                        len--;
                }
                System.out.println(result);
        }

作者: duanqichao    时间: 2016-11-26 19:37
华阿图 发表于 2016-11-26 13:09
帮你整理了一下代码:
[mw_shl_code=java,true]public static void main(String[] args) {
                Scanner sc = n ...

嗯嗯,非常感谢。

作者: lieyemu    时间: 2016-11-26 23:31
6666666666666
作者: 文明密码    时间: 2016-11-26 23:35
用位权转换

作者: javantiger93000    时间: 2016-11-27 01:27
标题: 我用IO流做的,有什么不优化的还请指正
本帖最后由 javantiger93000 于 2016-11-27 01:31 编辑

import java.io.*;
import java.math.*;
class TwoToTen{
        public static void twoToTen() throws IOException
        {
        BufferedReader bufr =
                                                new BufferedReader(new InputStreamReader(System.in));
        
        String line=null;
        while((line=bufr.readLine())!=null)
        {
                BigInteger src = new BigInteger(line, 2);
                System.out.println("二进制数"+line+"="+src.toString());
               
        }
        
        bufr.close();
        }
        
        
        
        
        public static void main(String[] args) throws IOException
         {
                        twoToTen();
         }
        
}

dos.png (3.29 KB, 下载次数: 25)

dos.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2