问题相关代码
import java.util.Scanner;
public class xierlist {
int arr[];
public void shellSort(int arr[],int n) {
int length = arr.length;
int key = 0;
int i = 0;
for ( n = length / 2;n >= 1;n /= 2) {
key = arr[n];
int j = i - n;
while (j >=0 && arr[j] > key) {
arr[ j + n] = arr[j];
j-=n;
}
arr[j+n]=key;
}
print_list(arr,n);
}
public void print_list(int arr[],int n) {
for (int i = 0;i < n;i++) {
System.out.println(arr[n]);
}
}
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一组数字");
int[] arr = new int[10];
for(int i = 0;i<arr.length;i++) {
arr[i] = input.nextInt();
}
xierlist p = new xierlist();
p.shellSort(arr,10);
p.print_list(arr, 10);
}
}
运行结果及报错内容
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at qifei.xierlist.print_list(xierlist.java:38)
at qifei.xierlist.main(xierlist.java:63)
我想要达到的结果
可以正常运行
最好的情况是 :可以帮我改进一下,使得 int[] arr = new int[10]; 里的10 可以用户自行输入
代码存在一个小问题
如图第37行需要改正:
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!