【字符串】【JAVA】P1553 数字反转(升级版)

在这里插入图片描述
思路:

首先要对输入的数据进行判断并记录数据类型,这里我用index记录,然后对应不同的数据类型执行不同的操作,至于反转操作可以使用StringBuilder中的reverse方法,输出再通过前面的记录值进行不同的输出。

从题目中可以得到信息

1.整数、百分数直接反转
2.小数、分数分成两部分反转,不交换整数(分子)和小数(分母)。

需要注意的地方:

1.整数若有后置零,反转后要把零去掉 例如120反转后是21。
2.小数中小数部分反转后,小数部分的前置零需要去掉 例如1.023反转后是1.32 忽略了这个条件只能90分。
3.split方法分隔,若符合的值在字符串末尾,相当于被替换成“”了。

package LOQ.字符串; import java.util.Scanner; /* 整数反转 升级版 */ public class P1553 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s1 = sc.next(); int index=0; for(int i=0;i<s1.length();i++) { if(s1.charAt(i)=='.') { index=1; //判断输入情况并记录 break; } else if(s1.charAt(i)=='/') { index=2; break; } else if(s1.charAt(i)=='%') { index=3; break; } } String[] s2 = s1.split("[.|//|%]"); //获取到分隔后的一部分或两部分 StringBuilder sb1 = new StringBuilder(s2[0]); StringBuilder sb2 = null; if(index==1 || index==2) { //若可以分成两部分就分成两部分 sb2 = new StringBuilder(s2[1]); sb2.reverse(); } sb1.reverse(); switch (index) { case 0: //转换成长整数输出 System.out.println(Long.parseLong(String.valueOf(sb1))); break; case 1: sb2.reverse(); //消除分子部分后置零 long l=Long.parseLong(String.valueOf(sb2)); StringBuilder sb3 = new StringBuilder(String.valueOf(l)); System.out.println(Long.parseLong(String.valueOf(sb1))+"."+sb3.reverse()); break; case 2: System.out.println(Long.parseLong(String.valueOf(sb1))+"/"+Long.parseLong(String.valueOf(sb2))); break; case 3: System.out.println(Long.parseLong(String.valueOf(sb1))+"%"); break; } } }

__EOF__

本文作者lnnau
本文链接https://www.cnblogs.com/wlunan/p/15948476.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Lnnau  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示