一、题目


科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入格式:

每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

输出格式:

对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

输入样例 1:

+1.23400E-03

输出样例 1:

0.00123400

输入样例 2:

-1.2E+10

输出样例 2:

-12000000000

二、解析


分情况讨论,分离这个正则表达式,可以把输入样例分成三个部分。记为left,middle,right,分值≤0或>0两种情况讨论:

  • <=0,即值为小数,这时候只要搞清楚小数点向左移的位数就行了。,拿样例1做例子,分别是:+1,23400,-03。明显这个例子leftMove=3,先输出0和小数点,再输出剩余的0,再输出left部分的整数1,再输出middle部分就行;leftMove如果为0需要特殊讨论,先输出left部分的整数1,再小数点,再middle部分。
  • >0,即值为正数,先搞清楚小数点会往右移动的位数,这里也分两种情况,需不需要补零。不管需不需要补零,都要先输出left的整数部分。如果需要补零,先输出middle部分,再补零即可;若不需要,则计算出小数点的位置,输出middle部分小数点前的,再输出小数点,再输出小数点后的。

最后讨论一下正负号应不应该输出即可。

三、代码


import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str[] = input.next().split("\\.|E");
// for (String s : str) {
// System.out.println(s);
// }
StringBuffer sb = new StringBuffer();
// <=0 的情况
if(str[2].charAt(0) == '-'){
int leftMove = Integer.parseInt(str[2].substring(1, str[2].length()));
if(leftMove == 0){
sb.append(str[0].charAt(1));
sb.append(".");
}else{
for(int i=0; i<leftMove; i++){
if(i==0) sb.append("0.");
else sb.append("0");
}
sb.append(str[0].charAt(1));
}
sb.append(str[1]);
}
// >0的情况
else{
int rightMove = Integer.parseInt(str[2].substring(1, str[2].length()));
int countZero = rightMove - str[1].length();
sb.append(str[0].charAt(1));
if(countZero < 0 ){
for (int i = 1; i <= str[1].length(); i++) {
if(i == rightMove) sb.append(str[1].charAt(i-1)+".");
else sb.append(str[1].charAt(i-1));
}
}else{
sb.append(str[1]);
for (int i = 0; i < countZero; i++)
sb.append("0");
}
}
if(str[0].charAt(0) == '-') System.out.print("-");
System.out.print(sb);
}
}

PAT-basic-1024 科学计数法 java的更多相关文章

  1. PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  2. PAT乙级 1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  3. PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  4. PAT乙级 1024 科学计数法

    思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...

  5. C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...

  6. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  7. PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

    1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...

  8. PAT-乙级-1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  9. P 1024 科学计数法

    转跳点:

  10. PAT (Basic Level) Practice 1024 科学计数法 分数 20

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

随机推荐

  1. 以MPU6050为例的硬件IIC的使用

    目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 ...

  2. UML 组成 1

    常用关系: 关联关系使用一条直线表示,比如  A与B关联 用于描述不同类的对象之间的结构关系,将多个类的实例联系在一起 是一种静态关系,基本与程序的运行没有关系 比如,部门与员工的关系,就是关联关系 ...

  3. js 处理大数相减

    function sub(num1, num2) { if(num1 === num2) return '0' function lt(num1, num2) { if (num1.length &l ...

  4. 【SSO单点系列】(4):CAS4.0 之非Ajax-iframe 登录

    一.描述 不使用Ajax-iframe 登录 仍然要自定义页面 二.思路: 将数据提交给服务器登录页面,服务登录页面自动提交. 三.实现 1.客户端 <form name="login ...

  5. 无法识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次

    无法识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次 解决方法: 1.在开始菜单里找到Windows PowerShell.并以管理 ...

  6. redis的安装详细教程

    redis官方下载地址是:https://redis.io/download, redis 64位下载地址是:https://github.com/ServiceStack/redis-windows ...

  7. python 给视频加入音频

    1.先去查查  ffmpeg 这个东西   贼强 # 附上大佬博客   https://blog.csdn.net/qq_39752726/article/details/ 104263381?utm ...

  8. [转]有限状态机FSM(finite state machine) 一

    有限状态机FSM(finite state machine) 一 有限状态机又称有限自动状态机,它拥有有限数量的状态,每个状态代表不同的意义,每个状态可以切换到 零-多 个状态.任意时刻状态机有且只能 ...

  9. 【服务器数据恢复】HP EVA存储多块硬盘离线的数据恢复案例

    服务器故障&检测&分析:某品牌EVA存储设备中的RAID5磁盘有两块硬盘掉线,lun丢失.硬件工程师对故障服务器进行物理故障检测,发现掉线硬盘能够正常读取,无物理故障,也没有发现坏道. ...

  10. MxDraw云图平台(H5在线CAD) 网页CAD,网页查看CAD图纸,2023.02.26更新

    下载地址:https://www.mxdraw.com/ndetail_40241.html1. 梦想服务上传CAD文件格式转换,增加转换后的文件例表返回2. 增加绘制图片Tag功能3. 修改在一些图 ...