gpt4 book ai didi

java - 对数组项进行数字编号

转载 作者:行者123 更新时间:2023-12-02 04:53:45 25 4
gpt4 key购买 nike

好吧,所以我尝试在我的代码中实现冒泡排序算法,但现在我的第二个数组(在我的代码中)的输出给了我大量的零。谁能告诉我我的代码有什么问题以及如何修复它以便删除零并且第二个数组的输出中保留的唯一内容是固定的数字?

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]);
}

int[] array2 = new int[i];

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

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

int temp;
boolean organized = false;

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


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

if (array1[i] > array1[i + 1]) {
temp = array1[i + 1];
array1[i + 1] = array1[i];
array1[i] = temp;
organized = false;
}
}

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

}
}
}

最佳答案

在排序之前将您的array1复制到正确长度的array2,类似于

for (i = 0; i < 10; i++) {
System.out.println("Input a number for " + (i + 1) + ": ");
int input = scan.nextInt();
if (input == -9000) {
break;
}
array1[i] = input;
}
int[] array2 = Arrays.copyOfRange(array1, 0, i);
System.out.println("Before sorting: " + Arrays.toString(array2));
Arrays.sort(array2); // <-- How I would sort.
System.out.println("After sorting: " + Arrays.toString(array2));

之所以有必要,是因为 i 可能不是 为 10,在这种情况下,您的数组包含 0 来填充其他数组职位。

Is it possible to move all my numbers from Array 1 to Array 2 using a for-loop?

是的。您可以使用 for 循环实现 copyOfRange 函数,

private static int[] copyOfRange(int[] arr, int start, int end) {
int pos = 0;
int[] out = new int[end - start];
for (int i = start; i < end; i++) {
out[pos] = arr[i];
pos++;
}
return out;
}

内置版本几乎肯定更好。

关于java - 对数组项进行数字编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978832/

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