用集合流的聚合操作将二进制转换为十进制

该题 为Java语言程序设计与数据结构(进阶篇)原书第11版 P351 编程练习题30.10

public static void main(String[] args) {
		String str = "10010";
		int[] arr = stringToArr(str);	
		//调用方法逆序显示str
		// arr:{0, 1, 0, 0, 1} 字符串的逆序

		int dec = IntStream.of(arr).reduce(0, (e1, e2) ->{
			/*if(e2 == 1)
				e1 = (e1 + 1) * 2;
			else 
				e1 = e1 * 2;
			return e1;*/ 
			return (e2 == 1) ? (e1 + 1) * 2 : e1 * 2;
		});
		System.out.println(dec);
	}
	/**
	 * 	 将指定二进制字符串转换为 逆序的数组
	 * @param str
	 * @return
	 */
	private static int[] stringToArr(String str) {
		int[] arr = new int[str.length()];
		int temp = 0;
		for(int i = str.length() - 1; i >= 0; i--) {
			arr[temp] = str.charAt(i) - '0';
			temp++;
		}
		return arr;
	}

如有问题欢迎评论区指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值