一、题目


科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][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. Visual Studio Code 使用总结

      记录一下个人在使用 VS Code 中的一些插件和设置.   该配置在编写 vue + iview 项目时使用. 文件路径 用户文件路径:%AppData%/Code/User 用户设置:sett ...

  2. web基础(3):CSS样式

    chapter4 CSS样式 html是网页的内容和结构:CSS是网页的样式.内容和样式相分离,便于修改样式. CSS cascading style sheets 层叠样式表.一个内容上面可以添加多 ...

  3. vue 中使用 XLSX 和 xlsx-style 实现前端下载Excel表格

    import XLSX from "xlsx-style"  //ps  需要修改源码:在\node_modules\xlsx-style\dist\cpexcel.js 807行 ...

  4. scp 和 rsync

    scp 和 rsync指令的区别 相同点两者都可以被用来进行数据同步 不同点 : 对于scp来讲 是全量复制 以当前主机为准 将相同的文件拷贝到另一台机器上 rsync 可以识别增量的内容,可以仅仅对 ...

  5. WARN hdfs.DataStreamer: Caught exception

    在向hdfs上传文件的时候,报了这么一个错: Exception in thread "main" java.lang.RuntimeException: org.apache.h ...

  6. lua module以及模块内的local function使用

    在模块定义local function,使用local function时,需要在使用前就定义,不能通过self:localfunction 或者self.locakfunction 因为是模块内的局 ...

  7. 最后的 SPRING

    其核心JAR包spring-web-5.2.0.RELEASE.jar和spring-core-5.2.0.RELEASE.jar的大小均为1.4MB左右 基于工厂模式实现对象的创建 添加了国际化.事 ...

  8. Git Commit Rule

    ## git commit tagfeat: 新功能fix: 修复问题docs: 修改文档style: 修改代码格式,不影响代码逻辑refactor: 重构代码,理论上不影响现有功能perf: 提升性 ...

  9. ipvsadm DR模型的实现方式

    DR模型的lvs ----在实现DR模型的时候所有RS都要屏蔽掉ARP请求的响应 实现方法:1.可以用路由器绑定静态VIP:MAC(DVIP)2.可以使用arptables3.可以使用 kernel ...

  10. uniapp引入微信小程序自定义视频组件--记录

    官方文档:https://zh.uniapp.dcloud.io/tutorial/miniprogram-subject.html 在 pages.json同级目录下 创建目录和文件: wxcomp ...