zoukankan      html  css  js  c++  java
  • 1261: 单位转换(Java)

    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

    1MB
    1KB
    1B
    1bit
    

    Sample Output

    8388608bit
    8192bit
    8bit
    1bit
    

    代码

    /**
     * 用时:263ms
     * @author PengHao
     * @version 1.0
     * @date 2019年4月12日 下午6:13:18
     */
    
    import java.util.Scanner;
    
    public class Main {
    
    	private Scanner sc;
    	private int x;
    	private String unit;	// 读取输入
    
    	public Main() {
    		sc = new Scanner(System.in);
    		while(sc.hasNext()) {
    			unit = sc.next();	// 读取输入
    			// 将非数据字段清空后,剩下的数字字段转成int型
    			x = Integer.parseInt(unit.replaceAll("\D+", ""));
    			unit = unit.replaceAll("\d+", "");	// 单位
    			switch(unit) {
    			case "MB":
    				x *= 8388608;
    				break;
    			case "KB":
    				x *= 8192;
    				break;
    			case "B":
    				x *= 8;
    				break;
    			default:
    			}
    			System.out.println(x + "bit");			
    		}
    		sc.close();
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    
    }
    

    代码扩展(读取输入)

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

    /**
     * @author wowpH
     */
    import java.util.Scanner;
    
    public class Main {
    
    	private Scanner sc;
    	private int x;
    	private String unit;
    	
    	public Main() {
    		sc = new Scanner(System.in);
    		x = sc.nextInt();
    		unit = sc.next();
    		sc.close();
    	}
    	
    	public static void main(String[] args) {
    		new Main();
    	}
    	
    }
    

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

    /**
     * @author wowpH
     */
    import java.util.Scanner;
    
    public class Main {
    
    	private Scanner sc;
    	private int x;
    	private String all;
    	private String number;
    	private String unit;
    	
    	public Main() {
    		sc = new Scanner(System.in);
    		all = sc.next();
    		number = all.replaceAll("\D+", "");	// 将非数字字符删除,剩下的都是数字字符(0-9)
    		unit = all.replaceAll("\d+", "");	// 将数字字符删除,剩下的都是非数字字符
    		x = Integer.parseInt(number);	// 转成int型
    		sc.close();
    	}
    	
    	public static void main(String[] args) {
    		new Main();
    	}
    	
    }
    

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


  • 相关阅读:
    MATLAB 和 armadillo 数据转换
    macOS gcc g++ c++ cc
    Sublime-Text macOS 编译运行armadillo
    macOS BLAS LAPACK
    Rsyslog 日志相关内容
    构建基于虚拟用户的vsftpd服务器
    对Servlet执行流程的初步认识
    对Servlet执行流程的初步认识
    android studio 开发环境的搭建
    android studio 开发环境的搭建
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060829.html
Copyright © 2011-2022 走看看