gpt4 book ai didi

java - 为什么 print 方法从数组索引中打印空数据?

转载 作者:行者123 更新时间:2023-12-01 23:42:36 25 4
gpt4 key购买 nike

我昨天发布了一个关于数组中索引排序的问题。我得到了奇怪的结果,其中部分是正确的。我找到了原因,但不知道如何解决。

我声明了一个数组的最大索引数为50。将数据读入文件后,只有大约24个索引填充了实际数据,其余的都填充了0。当我打印时,所有 50 个索引均按升序列出。我不知道如何只打印带有数据的索引。

这是我昨天问题的链接:Sorting double arrays into ascending order

下面是我的数组声明和初始化、排序循环和打印的代码。任何帮助都会很棒!

private double[] x;


x = new double[50];

int index, j = x.length - 1,double temp;

for (j = x.length - 1; j >= 0; j--) {
for (index = 0; index <= j - 1; index++) { //start for
if (x[index] > x[index + 1]) { //start if
temp = x[index];
x[index] = x[index + 1];
x[index + 1] = temp;
}
}
}

for (index = 0; index < x.length; index++) {
System.out.printf("%3d. \t\t%5.1f%%\n", (index + 1), x[index]);
}

最佳答案

由于所有数组索引都初始化为 0,因此您的排序算法会将所有没有数据的索引(基本上是 0)移动到数组的前面,在您添加的值之前 - 正如所指出的,该值也可能包含 0。然后,您的 print 方法将打印整个数组,因为您是从 index=0 开始并一直移动到数组的末尾。

我建议如下:向数组添加数据时,保留一个 count 变量来跟踪您添加了多少个值(即每次都执行 count++添加一个新值),然后对数组进行排序。

然后像这样打印:

for (index = x.length-count; index < x.length; index++) {
System.out.printf("%3d. \t\t%5.1f%%\n", (index + 1), x[index]);

}

因此,您只打印自己添加的数据,而不打印空索引。

关于java - 为什么 print 方法从数组索引中打印空数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com