Java 排序数组时ArrayIndexOutOfBoundsException
我只想用sort方法对数字数组进行排序。但不幸的是,它抛出了一个错误:Java 排序数组时ArrayIndexOutOfBoundsException,java,arrays,sorting,object,Java,Arrays,Sorting,Object,我只想用sort方法对数字数组进行排序。但不幸的是,它抛出了一个错误: java.lang.ArrayIndexOutOfBoundsException:10 at Search.sort(Search.java:30)at Search.main(Search.java:67) 这是我的密码: import java.util.Scanner; public class Search { public Search() { System.out.println("inside
java.lang.ArrayIndexOutOfBoundsException:10 at Search.sort(Search.java:30)at Search.main(Search.java:67)
这是我的密码:
import java.util.Scanner;
public class Search {
public Search() {
System.out.println("inside a constructer");
}
public int[] sort(int x[]) {
for (int i = 0; i < x.length - 1; i++)
for (int j = 1; j < x.length; j++) {
int temp;
if (x[i] > x[j]) {
temp = x[i];
x[i] = x[j];
x[j] = x[i];
}
}
return x;
}
public static void main(String[] args) {
// System.out.println("fgdg"+num);
int num[] = new int[10];
Scanner sc = new Scanner(System.in);
System.out.println("Eneter the 10 integers:");
for (int i = 0; i < 10; i++) {
System.out.println("Enter the " + (i + 1) + " number:");
num[i] = sc.nextInt();
}
System.out.println("before sorting:");
for (int m = 0; m <= num.length; m++)
System.out.println(num[m]);
Search obj = new Search();
int x1[] = obj.sort(num);
System.out.println("sorted:");
for (int k = 0; k <= x1.length; k++)
System.out.println(x1[k]);
}
}
import java.util.Scanner;
公共类搜索{
公开检索(){
System.out.println(“构造函数内部”);
}
公共整数[]排序(整数x[]){
对于(int i=0;ix[j]){
温度=x[i];
x[i]=x[j];
x[j]=x[i];
}
}
返回x;
}
公共静态void main(字符串[]args){
//系统输出打印项次(“fgdg”+num);
int num[]=新的int[10];
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入10个整数:”);
对于(int i=0;i<10;i++){
System.out.println(“输入”+(i+1)+“编号:”);
num[i]=sc.nextInt();
}
System.out.println(“排序前:”);
对于(int m=0;m将for条件更改为:
for (int i=0;i<x.length;i++)
for(int j=1;j<x.length;j++){
//your code
}
}
for(int i=0;i
意味着您的数组有10个元素(长度=10),索引范围为0-9
将方法中的for循环更改为
for (int i=0;i<x.length;i++)
for(int j=i+1;j<x.length;j++)
排序方法中的j循环必须从i+1开始,而不是从1开始。数组索引是从零开始的。
改变
for(int i=0;ifor(int i=0;i将for循环更改为此代码:
for (int i=0;i<x.length;i++)
for(int j=i;j<x.length;j++)
for(int i=0;它不起作用……我认为最后一行obj.sort(num)有问题嘿,巴迪,这不是一个重复的问题,我又做了一些改变,但不起作用。还要更改中的前/后排序循环main@Rameez我刚刚运行了你的代码并编辑了我的答案,现在你应该设法让它工作。更改了它…但不再工作…请再次检查代码,因为我已经做了一些更改变量已分配但未使用。这是一个错误。
<= array.length
< array.length
if (x[i] > x[j]) {
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
for (int i=0;i<=x.length;i++)
for(int j=1;j<=x.length;j++)
for (int i=0;i<x.length;i++)
for(int j=i;j<x.length;j++)
for (int m = 0; m <= num.length; m++)
System.out.println(num[m]);
for (int k = 0; k <= x1.length; k++)
System.out.println(x1[k]);
for (int i=0;i<=x.length;i++)
for(int j=1;j<=x.length;j++)
{
int temp=0;
if(x[i]>x[j])
{
temp=x[i];
x[i]=x[j];
x[j]=x[i];
}
}
for (int i=0;i<x.length;i++)
for(int j=1;j<x.length;j++)
{
int temp=0;
if(x[i]>x[j])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
for (int i=0;i<x.length;i++)
for(int j=i;j<x.length;j++)