我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。Java洛谷传智杯

简介: 我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。Java洛谷传智杯

题目描述:

我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。


输入格式:输入一个字符串,由一个 0 到 1023 之间的整数,一个单位名称(大写字母),一个等于号和问号,以及第二个单位名称。

单位只有可能是 GB,MB,KB,B 之间的一个。


输出格式:输出一个数字,精确到小数点后 6 位。


输入输出样例:


输入 #1

128MB=?GB

输出 #1

0.125000


输入 #2

64MB=?KB

输出 #2

65536.000000


Java代码:


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        int[] curNum = new int[4];
        int count = 0, Num = 0;
        double toNum = 0;
        char curChar = 0, toChar = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '?'){
                toChar = s.charAt(i + 1);
                break;
            }
        }
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'){
                curChar = s.charAt(i);
                break;
            }
            curNum[i] = s.charAt(i) - '0';
            count++;
        }
        for (int i = 0; ; i++) {
            Num += curNum[i] * Math.pow(10,count-1);
            count--;
            if (count == 0) break;
        }
        if (curChar == 'G'){
            if (toChar == 'M'){
                toNum = Num * Math.pow(2,10);
            }
            else if (toChar == 'K'){
                toNum = Num * Math.pow(2,20);
            }
            else if (toChar == 'B'){
                toNum = Num * Math.pow(2,30);
            }else toNum = Num;
        }
        if (curChar == 'M'){
            if (toChar == 'G'){
                toNum = Num * Math.pow(2,-10);
            }
            else if (toChar == 'K'){
                toNum = Num * Math.pow(2,10);
            }
            else if (toChar == 'B'){
                toNum = Num * Math.pow(2,20);
            }else toNum = Num;
        }
        if (curChar == 'K'){
            if (toChar == 'G'){
                toNum = Num * Math.pow(2,-20);
            }
            else if (toChar == 'M'){
                toNum = Num * Math.pow(2,-10);
            }
            else if (toChar == 'B'){
                toNum = Num * Math.pow(2,10);
            }else toNum = Num;
        }
        if (curChar == 'B'){
            if (toChar == 'G'){
                toNum = Num * Math.pow(2,-30);
            }else if (toChar == 'M'){
                toNum = Num * Math.pow(2,-20);
            }else if (toChar == 'K'){
                toNum = Num * Math.pow(2,-10);
            }else toNum = Num;
        }
        System.out.printf("%.6f",toNum);
    }
}



相关文章
|
2月前
|
监控 Java 网络安全
|
2月前
|
存储 Java
35、Java 中的 Math 类、Random 随机数、UUID、格式化字符串或数字、字符串和数字的相互转换、高精度计算、BigDecimal、计算机中的浮点数都是近似值
35、Java 中的 Math 类、Random 随机数、UUID、格式化字符串或数字、字符串和数字的相互转换、高精度计算、BigDecimal、计算机中的浮点数都是近似值
48 0
|
4月前
|
Java
用Java编写一个代码实现计算器功能
【1月更文挑战第17天】用Java编写一个代码实现计算器功能
24 0
|
4月前
|
Python Java Go
Java每日一练(20230416) 三数之和、基本计算器、通配符匹配
Java每日一练(20230416) 三数之和、基本计算器、通配符匹配
29 0
Java每日一练(20230416) 三数之和、基本计算器、通配符匹配
|
4月前
|
Python Java 算法
Java每日一练(20230415) 扰乱字符串、单词拆分、模拟计算器
Java每日一练(20230415) 扰乱字符串、单词拆分、模拟计算器
29 0
Java每日一练(20230415) 扰乱字符串、单词拆分、模拟计算器
|
4月前
|
人工智能 前端开发 JavaScript
计算机Java项目|超市进销存管理系统(二)
计算机Java项目|超市进销存管理系统
|
4月前
|
Java 关系型数据库 MySQL
计算机Java项目|超市进销存管理系统(一)
计算机Java项目|超市进销存管理系统
|
4月前
|
前端开发 JavaScript Java
计算机Java项目|古诗词数字化平台
计算机Java项目|古诗词数字化平台
|
4月前
|
前端开发 JavaScript Java
计算机Java项目|尤文图斯足球俱乐部网上商城系统
计算机Java项目|尤文图斯足球俱乐部网上商城系统
|
4月前
|
人工智能 前端开发 JavaScript
计算机Java项目|基于SSM的课程智能组卷系统(二)
计算机Java项目|基于SSM的课程智能组卷系统
计算机Java项目|基于SSM的课程智能组卷系统(二)