gpt4 book ai didi

java - 数字列表数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:47 29 4
gpt4 key购买 nike

所以我的代码有问题。这就是我想要做的:让一个数组包含一组原始数字(最多 10 个数字),然后将这些数字复制并粘贴到第二个数组中。然后,第二个区域按数字方式列出第一个数组中的这些数字(从最低数字到最高数字)。

问题是......我的第二个输出给了我一个很好的输出,最低的数字变成了最高的数字,但是,与此同时,如果我用 -9000 输入停止我的代码,我会得到一长串重复的数字和大量的零。谁能告诉我问题是什么以及如何解决它?顺便说一句,我不想​​使用 Array.sort() 选项对第二个数组进行排序。除扫描仪外不导入任何内容:

public static void main(String[] args) {

System.out.println("Input up to '10' numbers for current array: ");

int[] array1 = new int[10];
int i;

Scanner scan = new Scanner(System.in);

for (i = 0; i < 10; i++) {
System.out.println("Input a number for " + (i + 1) + ": ");
int input = scan.nextInt();
if (input == -9000) {
break;
} else {
array1[i] = input;
}
}

System.out.println("\n" + "Original Array: ");

for (int j = 0; j < i; j++) {

System.out.println((j + 1) + ": " + array1[j]);
}

System.out.println("\n" + "Organized Array: ");

int[] array2 = new int[i];
for (i = 0; i < array1[i]; i++) {
System.out.println(+array1[i]);

for (int j = 0; j < i; j++) {

int temp;
boolean numerical = false;

while (numerical == false) {
numerical = true;

for (i = 0; i < array1.length - 1; i++) {

if (array2[i] > array2[i + 1]) {
temp = array2[i + 1];
array2[i + 1] = array2[i];
array2[i] = temp;
numerical = false;
}
}
}

}
for (i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
}
}

最佳答案

您需要解决几个问题才能使程序运行:

您忘记将 array1 复制到 array2:

您认为来自排序 array2 的输出实际上来自排序过程。

int[] array2 = new int[i];
for (int j = 0; j < i; j++) {
array2[j] = array1[j];
}

您将排序数组的输出放置在进行排序的循环内:

检查花括号的级别,并将输出循环移至排序循环之后

for (i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}

您的排序算法有一个额外的循环:

拥有最外层循环是没有意义的:如果没有它,你的冒泡排序算法也可以完美工作,因此你应该删除该循环,并将其主体向上移动一层嵌套:

for (i = 0; i < array1[i]; i++) { // Remove the loop
... // <<== Keep the body
}

您最内层的循环错误地重用了 i:

将循环变量i替换为另一个变量,例如

for (int m = 0 ; m < array2.length - 1; m++) {
if (array2[m] > array2[m + 1]) {
temp = array2[m + 1];
array2[m + 1] = array2[m];
array2[m] = temp;
numerical = false;
}
}

Demo.

关于java - 数字列表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994829/

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