题目描述
我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。
提示,1 GB = 2^10 MB = 2^20 KB = 2^30 B。
输入格式
输入一个字符串,由一个 0 到 1023 之间的整数,一个单位名称(大写字母),一个等于号和问号,以及第二个单位名称。
单位只有可能是 GB
,MB
,KB
,B
之间的一个。
输出格式
输出一个数字,精确到小数点后 6 位。
输入输出样例
输入
128MB=?GB
输出
0.125000
输入
64MB=?KB
输出
65536.000000
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
String str=scan.next();
int a1=0;
String str1="",str2="";
int biaoji=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)>='0'&&str.charAt(i)<='9') {
a1=a1*10+str.charAt(i)-'0';
}
if(biaoji==0&&str.charAt(i)>='A'&&str.charAt(i)<='Z') {
str1=str1+str.charAt(i);
}
if(str.charAt(i)=='=') {
biaoji++;
}
if(biaoji==1&&str.charAt(i)>='A'&&str.charAt(i)<='Z') {
str2=str2+str.charAt(i);
}
}
System.out.printf("%.6f",f(a1,str1,str2));
}
public static double f(int a1,String str1,String str2) {
if(str1.equals("GB")&&str2.equals("GB")) {
return (double)a1;
}
if(str1.equals("GB")&&str2.equals("MB")) {
return a1*1.0*1024;
}
if(str1.equals("GB")&&str2.equals("KB")) {
return a1*1.0*1048576;
}
if(str1.equals("GB")&&str2.equals("B")) {
return a1*1.0*1073741824;
}
if(str1.equals("MB")&&str2.equals("MB")) {
return (double)a1;
}
if(str1.equals("MB")&&str2.equals("KB")) {
return a1*1.0*1024;
}
if(str1.equals("MB")&&str2.equals("B")) {
return a1*1.0*1048576;
}
if(str1.equals("KB")&&str2.equals("KB")) {
return (double)a1;
}
if(str1.equals("KB")&&str2.equals("B")) {
return a1*1.0*1024;
}
if(str1.equals("B")&&str2.equals("B")) {
return (double)a1;
}
if(str1.equals("B")&&str2.equals("KB")) {
return a1*1.0/1024;
}
if(str1.equals("B")&&str2.equals("MB")) {
return a1*1.0/1048576;
}
if(str1.equals("B")&&str2.equals("GB")) {
return a1*1.0/1073741824;
}
if(str1.equals("KB")&&str2.equals("MB")) {
return a1*1.0/1024;
}
if(str1.equals("KB")&&str2.equals("GB")) {
return a1*1.0/1048576;
}
if(str1.equals("MB")&&str2.equals("GB")) {
return a1*1.0/1024;
}
return 0.0;
}
}