题目链接
描述:输入n个浮点数,要求把这n个浮点数重新排列后再输出
输入:第1行是一个正整数n(n<=10000),后面n行每行一个浮点数,保证小数点会出现, 浮点数的长度不超过50位,注意这里的浮点数会超过系统标准浮点数的表示范围。
输出:n行,每行对应一个输入。要求每个浮点数的小数点在同一列上,同时要求首列上不会全部是空格。
样例输入
2
-0.34345
4545.232
样例输出
-0.34345
4545.232
解题思路:
本题虽然以浮点数作为标题,但实际上是对字符串的处理,因为这里的浮点数会超过系统标准浮点数的表示范围,所以用浮点数来存储输入必然不可。对于小数点后面有多少个数并没有关系,只需要找到小数点前面的字符最多的有几个即可,也就是找出小数点前面的字符串长度的最大值,对于小数点前面字符数少于该唱的的字符串,补齐空格即可。
解题代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int n=input.nextInt();
int index=0;
String[] strs=new String[n];
int maxI=0;
while(index<n) {
String str=input.next();
strs[index]=str;
String i=str.substring(0, str.indexOf('.'));
if(i.length()>maxI) {
maxI=i.length();
}
index++;
}
for(int k=0;k<n;k++) {
String str=strs[k];
String i=str.substring(0, str.indexOf('.'));
int numOfZero=maxI-i.length();
for(int p=0;p<numOfZero;p++) {
System.out.print(" ");
}
System.out.println(str);
}
input.close();
}
}