package kata_007_二进制序列转十进制int;
/**
* java8 Lambda表达式转换binary序列->十进制数
*/
import java.util.ArrayList;
public class ShortBinaryToDecimal {
public static void main(String[] args) {
ArrayList<Integer> binary = new ArrayList();
binary.add(1);
binary.add(0);
binary.add(1);
binary.add(0);
int result = binaryToDecimal(binary);
System.out.println(result);
}
public static int binaryToDecimal(ArrayList<Integer> binary) {
return binary.stream().reduce((x, y) -> x * 2 + y).get();
}
}
如果不用Lambda表达式,使用传统方式:
package kata_007_二进制序列转十进制int;
import java.awt.List;
import java.util.ArrayList;
public class TestBinaryToDecimal {
public static void main(String[] args) {
//test method
ArrayList binary = new ArrayList();
binary.add(1);
binary.add(0);
binary.add(0);
binary.add(1);
int result = binaryToDecimal(binary);
System.out.println(result);
}
public static int binaryToDecimal(ArrayList<Integer> binary) {
String binaryStr = "";
for(int i=0;i<binary.size();i++) {
binaryStr += binary.get(i);
}
//String binary -> String decimal
String decimalStr = Integer.valueOf(binaryStr,2).toString();
//String decimal -> int
int decimalResult = Integer.parseInt(decimalStr);
return decimalResult;
}
}
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。