题目要求
分析
建议分别识别不同类型,进行处理。
整数倒置、排0。
分数只是分隔开分母和分子,分别按照整数来处理。
小数注意整数部分按照整数处理,小数部分要反过来处理。
百分数在排除%以后按照整数处理。
有一些问题是在用regex时,".“不能表示小数点,应该用”\."才行,这个要注意,很重要。。我第一次提交就是因为这个爆的异常。
还有就是整数部分和小数部分处理方式不一致,这个一定要注意,否则会WA掉。
具体的实现看代码吧!
第一次提交——RE
获取了测试数据2:
in
0.00000
out
0.0
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
private static String reverse1(String num) {
char[] chars = new StringBuilder(num).reverse().toString().toCharArray();
int count = 0;
while (count < chars.length && chars[count] == '0') {
count++;
}
if (count >= chars.length) {
return "0";
}
return new String(chars).substring(count);
}
private static String reverse2(String num) {
char[] chars = new StringBuilder(num).reverse().toString().toCharArray();
int count = chars.length-1;
while (count >= 0 && chars[count] == '0') {
count--;
}
if (count < 0) {
return "0";
}
return new String(chars).substring(0, count+1);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num = scanner.nextLine();
scanner.close();
if (num.contains(".")) {
//小数
String[] nums = num.split("\\.");
System.out.println(reverse1(nums[0]) + "." + reverse2(nums[1]));
} else if (num.contains("/")) {
//分数
String[] nums = num.split("/");
System.out.println(reverse1(nums[0]) + "/" + reverse1(nums[1]));
} else if (num.endsWith("%")) {
//百分数
System.out.println(reverse1(num.substring(0, num.length()-1)) + "%");
} else {
//整数
System.out.println(reverse1(num));
}
}
}