gpt4 book ai didi

java - 在小数点处对齐 float 列 Java

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:44 24 4
gpt4 key购买 nike

我想在小数点处对齐一列 float 。我知道如果限制小数点后的点数很容易做到,但我希望用户能够输入无限数量和长度的 float 。

这是我的程序中处理 float 对齐的部分:

String[] input = new String[3];
System.out.format("%n%n\tEnter three floating point numbers%n");
for (int i=0;i<3;i++)
input[i] = in.nextLine();

System.out.format("\tHere they are lined up on their decimal point%n");

/*This is used to find decimal location in each string*/
int[] decLoc = new int[3];
for (int i=0; i<3; i++)
{
for(int j=1; j<=input[i].length();j++)
if(input[i].charAt(j-1) == '.')
decLoc[i] = j;
}
/*print 5 spaces before number if the decimal is at place 0, 4 spaces for 1...*/
for(int i=0;i<3;i++)
{
if(decLoc[i]==0) System.out.print(" ");
else if(decLoc[i]==1) System.out.print(" ");
else if(decLoc[i]==2) System.out.print(" ");
else if(decLoc[i]==3) System.out.print(" ");
else if(decLoc[i]==4) System.out.print(" ");
else if(decLoc[i]==5) System.out.print(" ");

System.out.println(input[i]);
}

输出:

        Enter three floating point numbers
3265.3265
23.365
254.3256
Here they are lined up on their decimal point
3265.3265
23.365
254.3256

需要更好的解决方案来对齐不同长度的 float 。

最佳答案

为了使其灵活,您只需在已有的代码中添加几行代码即可。首先,我们来看看点之前最长的数字是多少:

int LENGTH = 3;
int longestCountBeforeDecimalPoint = 0;

for (int i=0; i<LENGTH; i++) {
int indexOfDot = input[i].indexOf(".");

if (longestCountBeforeDecimalPoint < indexOfDot) {
longestCountBeforeDecimalPoint = indexOfDot;
}
}

然后,不要使用“if”条件,而是添加此行,它将利用您之前找到的小数点位置,基本上完成您正在做的事情,但增加了灵 active :

for (int j=0; j<longestCountBeforeDecimalPoint - decLoc[i] + 1; j++) {
System.out.print(" ");
}

完整代码:

Scanner in = new Scanner(System.in);

int LENGTH = 3;
String[] input = new String[LENGTH];
System.out.format("%n%n\tEnter three floating point numbers%n");
for (int i=0; i<LENGTH; i++)
input[i] = in.nextLine();

//finds the longest number of digits before the dot
int longestCountBeforeDecimalPoint = 0;

for (int i=0; i<LENGTH; i++) {
int indexOfDot = input[i].indexOf(".");

if (longestCountBeforeDecimalPoint < indexOfDot) {
longestCountBeforeDecimalPoint = indexOfDot;
}
}

System.out.format("\tHere they are lined up on their decimal point%n");

/*This is used to find decimal location in each string*/
int[] decLoc = new int[LENGTH];
for (int i=0; i<LENGTH; i++)
{
//as R.J noted below, finding dot place can be done like this
decLoc[i] = input[i].indexOf('.');
}

/*print 5 spaces before number if the decimal is at place 0, 4 spaces for 1...*/
for(int i=0; i<LENGTH; i++)
{
//add spaces
for (int j=0; j<longestCountBeforeDecimalPoint - decLoc[i] + 1; j++) {
System.out.print(" ");
}

System.out.println(input[i]);
}

在输出中,您将按照要求将所有数字在点位置对齐。

使用随机生成的 10000 个数字进行测试,所有数字都在点位置对齐。

LENGTH 指定用户将输入的数字数量。当然,这也可以做得更灵活,比如输入某些特殊字符时终止输入数字等。

关于java - 在小数点处对齐 float 列 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858024/

24 4 0
文章推荐: python - 如何删除另一个特定字符前面的特定字符?
文章推荐: css - &.在 SCSS 中不起作用……为什么不呢?
文章推荐: css - 在 CSS