[问题描述]
BobLee最近在复习考研,在复习计算机组成原理的时候,
遇到了一个问题。就是在计算机存储里面的单位转换。
我们都知道1MB=1024KB,1KB=1024B,1B=8bit,
他在做题的时候经常会遇到格式各样的,
比如多少MB,KB,B什么的,但是都要转换为bit,
题目做的太多他都迷茫了,现在需要你通过程序来帮他解决这个问题。
[输入]
输入为多行未化简的数据,如xMB,xKB,xB,xbit,(1<=x<=50)
[输出]
输出为换算过后的数据,ybit
[样例输入]
1MB
1KB
1B
1bit
[样例输出]
8388608bit
8192bit
8bit
1bit
思路:数字和字母分割的时候运用了简单的正则表达式,split是分割,正则表达式中|是或,^ 不是 的意思…实在不懂就百度吧。
package KaoShi3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Demo1原理进制 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(); //切记是String类型
Scanner scanner = new Scanner(System.in);
String n;
while (!(n = scanner.nextLine()).equals("")) { //输入不能为空
String[] b1 = n.split("[MB]|[KB]|[B]|[bit]"); // 分割数字,(不是字母,是数字)
String[] b2 = n.split("^[0-9]{1,}"); // 分割字母,(不是数字,是字母)
if (b2[1].equals("MB")) {
list.add((long) (Integer.parseInt(b1[0]) * 1024 * 1024 * 8)+ "bit");
}
else if (b2[1].equals("KB")) {
list.add((long) Integer.parseInt(b1[0]) * 1024 * 8 + "bit");
}
else if (b2[1].equals("B")) {
list.add((long) Integer.parseInt(b1[0]) * 8 + "bit");
}
if (b2[1].equals("bit")) {
list.add((long) Integer.parseInt(b1[0]) * 1 + "bit");
}
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)); //.get取出来,输出就可
}
}
}