我们知道计算机的大小单位有 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);
    }
}



相关文章
|
3月前
|
存储 Java 开发工具
【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)
【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)
|
22天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
27天前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
44 1
|
1月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
62 2
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于Spring Boot的中小型医院网站的设计与实现
计算机Java项目|基于Spring Boot的中小型医院网站的设计与实现
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于Spring Boot的宠物咖啡馆平台的设计与实现
计算机Java项目|基于Spring Boot的宠物咖啡馆平台的设计与实现
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于SpringBoot的飘香水果购物网站
计算机Java项目|基于SpringBoot的飘香水果购物网站
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|基于Springboot的“衣依”服装销售平台的设计与实现
计算机Java项目|基于Springboot的“衣依”服装销售平台的设计与实现
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|图书大厦图书管理系统的设计与实现
计算机Java项目|图书大厦图书管理系统的设计与实现
下一篇
无影云桌面