A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© duanqichao 高级黑马   /  2016-11-25 22:53  /  1477 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

6 个回复

倒序浏览
做出来了,但是觉得还是有点复杂,想看看大家用纯粹的算法该怎么做。。。。。
[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[i] = 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);
    

	}



}
回复 使用道具 举报
帮你整理了一下代码:
[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[i] = Integer.parseInt(line.charAt(i) + "");
		}
		int result = 0;
		int len = arr.length;
		for (int i = 0; i < arr.length; i++) {
			result += arr[i] * Math.pow(2, len - 1);
			len--;
		}
		System.out.println(result);
	}
回复 使用道具 举报
华阿图 发表于 2016-11-26 13:09
帮你整理了一下代码:
[mw_shl_code=java,true]public static void main(String[] args) {
                Scanner sc = n ...

嗯嗯,非常感谢。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
6666666666666
回复 使用道具 举报
回复 使用道具 举报

我用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, 下载次数: 6)

dos.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马