java数组排序中的代码错误
当我运行以下程序(创建一个随机整数数组,然后在www.jdoodle.com中对它们进行排序)时,我收到以下错误消息:java数组排序中的代码错误,java,arrays,sorting,Java,Arrays,Sorting,当我运行以下程序(创建一个随机整数数组,然后在www.jdoodle.com中对它们进行排序)时,我收到以下错误消息: 我就是找不到这个该死的虫子。也许你们中一些更有经验的人可以看看代码?非常感谢 ========================================================================= import java.util.Random; import java.util.Arrays; public class Sort {
我就是找不到这个该死的虫子。也许你们中一些更有经验的人可以看看代码?非常感谢 =========================================================================
import java.util.Random;
import java.util.Arrays;
public class Sort {
public static void main(String[] args) {
int[] arr = createArray(20);
System.out.println("arr = " + java.util.Arrays.toString(arr));
int[] sortArr = sortArray(arr);
System.out.println("sorted arr = " + '\n'
java.util.Arrays.toString(sortArr));
}
public static int[] createArray(int l) {
int[] vektor = new int[l];
for(int i = 0; i < vektor.length; i++) {
java.util.Random r = new java.util.Random();
int n = r.nextInt(100);
vektor[i] = n;
}
return vektor;
}
public static int[] sortArray(int[] inArr) {
int a[] = inArr;
int i, j, min, help = 0;
int minPos = a.length;
for(i = 0; i < a.length; i++) {
min = a[i];
for(j = 1; j < a.length - i; j++) {
if(a[j] < min) {
minPos = j;
}
help = a[minPos]; // <--- Line 35
a[minPos] = a[i];
a[i] = help;
}
}
return a;
}
}
import java.util.Random;
导入java.util.array;
公共类排序{
公共静态void main(字符串[]args){
int[]arr=createArray(20);
System.out.println(“arr=“+java.util.Arrays.toString(arr));
int[]sortArr=sortArray(arr);
System.out.println(“排序的arr=“+”\n”
toString(sortArr));
}
公共静态int[]createArray(int l){
int[]vektor=新的int[l];
for(int i=0;i
System.out.println("sorted arr = " + '\n'
java.util.Arrays.toString(sortArr));
您在\n
和java.util.array.toString(sortArr)
之间缺少一个+
除了示例错误,您将minPos
等同于a.length
,这等于20
如果您的代码没有输入如果(a[j]
,那么a[minPos]
将与a[20]相同
,这是错误的:数组有20个位置,从0到19。最后一个位置应该是a[19]
您可以通过以下方式实现这一目标:
int minPos = a.length - 1;
你有:
int minPos = a.length;
...
help = a[minPos];
因此,如果这两行之间的代码都没有更改minPos
,则会出现此错误
你的意思可能是:
int minPos = a.length - 1;
您能在代码中标记第35行的位置吗?
int minPos = a.length - 1;