WUSTOJ 1261: 单位转换

参考资料

数字字符串拆分——百度知道

Description

BobLee最近在复习考研,在复习计算机组成原理的时候,遇到了一个问题。就是在计算机存储里面的单位转换。我们都知道1MB=1024KB,1KB=1024B,1B=8bit,他在做题的时候经常会遇到格式各样的,比如多少MB,KB,B什么的,但是都要转换为bit,题目做的太多他都迷茫了,现在需要你通过程序来帮他解决这个问题。

Input

输入为多行未化简的数据,如xMB,xKB,xB,xbit,(1<=x<=50)

Output

输出为换算过后的数据,ybit

Sample Input

  1. 1MB
  2. 1KB
  3. 1B
  4. 1bit

Sample Output

  1. 8388608bit
  2. 8192bit
  3. 8bit
  4. 1bit

代码

  1. /**
  2. * 用时:263ms
  3. * @author PengHao
  4. * @version 1.0
  5. * @date 2019年4月12日 下午6:13:18
  6. */
  7. import java.util.Scanner;
  8. public class Main {
  9. private Scanner sc;
  10. private int x;
  11. private String unit; // 读取输入
  12. public Main() {
  13. sc = new Scanner(System.in);
  14. while(sc.hasNext()) {
  15. unit = sc.next(); // 读取输入
  16. // 将非数据字段清空后,剩下的数字字段转成int型
  17. x = Integer.parseInt(unit.replaceAll("\\D+", ""));
  18. unit = unit.replaceAll("\\d+", ""); // 单位
  19. switch(unit) {
  20. case "MB":
  21. x *= 8388608;
  22. break;
  23. case "KB":
  24. x *= 8192;
  25. break;
  26. case "B":
  27. x *= 8;
  28. break;
  29. default:
  30. }
  31. System.out.println(x + "bit");
  32. }
  33. sc.close();
  34. }
  35. public static void main(String[] args) {
  36. new Main();
  37. }
  38. }

代码扩展(读取输入)

Java中不能用如下方法读取数字和字符串(输入格式同Sample Input):

  1. /**
  2. * @author wowpH
  3. */
  4. import java.util.Scanner;
  5. public class Main {
  6. private Scanner sc;
  7. private int x;
  8. private String unit;
  9. public Main() {
  10. sc = new Scanner(System.in);
  11. x = sc.nextInt();
  12. unit = sc.next();
  13. sc.close();
  14. }
  15. public static void main(String[] args) {
  16. new Main();
  17. }
  18. }

因为中间没有空格,是无法分辨的。这里用的方法是先读取为字符串,再转成数字和单位。例如本题:输入1MB,下面代码的第17行将会得到"1",而第18行将会得到"MB"

  1. /**
  2. * @author wowpH
  3. */
  4. import java.util.Scanner;
  5. public class Main {
  6. private Scanner sc;
  7. private int x;
  8. private String all;
  9. private String number;
  10. private String unit;
  11. public Main() {
  12. sc = new Scanner(System.in);
  13. all = sc.next();
  14. number = all.replaceAll("\\D+", ""); // 将非数字字符删除,剩下的都是数字字符(0-9)
  15. unit = all.replaceAll("\\d+", ""); // 将数字字符删除,剩下的都是非数字字符
  16. x = Integer.parseInt(number); // 转成int型
  17. sc.close();
  18. }
  19. public static void main(String[] args) {
  20. new Main();
  21. }
  22. }

当然还有不少其他方法,这里不一一讨论,在此选取最简单的粗略介绍。


1261: 单位转换(Java)的更多相关文章

  1. Java实现蓝桥杯单位转换

    单位转换 [问题描述] BobLee最近在复习考研,在复习计算机组成原理的时候,遇到了一个问题.就是在计算机存储里面的单位转换. 我们都知道1MB=1024KB,1KB=1024B,1B=8bit,他 ...

  2. spring-boot前端参数单位转换

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import ja ...

  3. 单位转换类UnitUtil2

    package com.jlb.scan.util; import java.math.BigDecimal; import java.text.DecimalFormat; import com.j ...

  4. Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换

    Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...

  5. Android 尺寸单位转换和屏幕适配相关

    Android 尺寸单位转换和屏幕适配相关 各种尺寸单位的意义 dp: Density-independent Pixels 一个抽象的单元,基于屏幕的物理密度. (dp和dip的意义相同,所以不用区 ...

  6. System.currentTimeMillis()计算方式与时间的单位转换

    目录[-] 一.时间的单位转换 二.System.currentTimeMillis()计算方式 一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 ...

  7. paip.c++ 转换 java 解决方案

    paip.c++ 转换 java 解决方案 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...

  8. 武汉科技大学ACM:1005: 单位转换

    Problem Description BobLee最近在复习考研,在复习计算 机组成原理的时候,遇到了一个问题.就是在计算机存储里面的单位转换.我们都知道1MB=1024KB,1KB=1024B,1 ...

  9. 【转】Android中dip(dp)与px之间单位转换

    Android中dip(dp)与px之间单位转换 dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因 ...

随机推荐

  1. 2018-2019 20175234 实验三《敏捷开发与XP实践》实验报告

    目录 2018-2019 20175234 实验三<敏捷开发与XP实践>实验报告 实验内容 实验中的问题 码云链接 参考资料 2018-2019 20175234 实验三<敏捷开发与 ...

  2. Flutter移动电商实战 --(41)详细页_数据接口的调试

    建立数据模型层,我们的业务逻辑分开,然后进行后台数据的调试 生成model类 json数据: { "code": "0", "message" ...

  3. [webpack]webpack打包优化

    1.import优化 a.tree-shaking 把没用到的代码删除掉,import 在生产环境下 会自动去除掉没用的代码 b.scope hosting 作用域提升,在webpack中会自动省略一 ...

  4. ISO/IEC 9899:2011 条款6.3.1——算术操作数

    6.3.1 算术操作数 6.3.1.1 布尔.字符以及整数 1.每个整数类型具有一个整数转换等级,如下定义: ——两个带符号的整数类型都不应该具有相同等级,即使它们具有相同的表示. ——一个带符号整数 ...

  5. Linux 验证当前 Video0 不否是v4l设备 linux v4l 编程(1) Video 4 Linux 简介

    #include <stdio.h> #include <string.h> #include <errno.h> #include <sys/types.h ...

  6. osg MatrixManipulator CameraManipulator

    <osgGA/MatrixManipulator>:No such file or directory 修改为 #include <osgGA/CameraManipulator&g ...

  7. java读取request中的xml

    java读取request中的xml   答: // 读取xml InputStream inputStream; StringBuffer sb = new StringBuffer(); inpu ...

  8. python高级知识

    网络udp socket的作用 进程指的是:运行的程序以及运行时用到的资源这个整体称之为进程 socket(简称 套接字) 是最通用的进程间通信的一种方式 创建socket import socket ...

  9. iOS的多线程技术

    iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØN ...

  10. iOS-UIView的layoutSubviews和drawRect方法何时调用(转)

    转自:http://jianyu996.blog.163.com/blog/static/112114555201305113018814/ 首先两个方法都是异步执行.layoutSubviews方便 ...