问题陈述:考虑一个数字字符串数组,其中每个字符串都是一个从 到 数字的正数。按实际整数值的非递减(即升序)顺序对数组元素进行排序,并在新行上打印排序数组的每个元素。
“由于输入数组由整数字符串组成,为了按升序对其进行排序,我们需要比较其中存在的每个元素,但由于整数采用字符串形式,因此需要将其转换为 Int 数据类型。
如果有人可以建议我代码中哪里出错了。我将不胜感激!
我不确定我的代码中是否存在逻辑错误,但在执行代码期间出现运行时错误“array IndexOutOfBounds”。
PS:我已经尽力了,但仍然无法找出我的错误。所以请不要否决其请求。
public static void main(String[] args)
{
int temp=0;;
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[]arr = new String[n];//array of numeric string
int[]array = new int[n];
for(int unsorted_i=0; unsorted_i < n; unsorted_i++){
arr[unsorted_i] = in.next();
}
for(int i=0;i<n-1;i++)//logic for sorting arrays
{
for(int j=0;j<n;j++)
{
array[i] =Integer.parseInt(arr[i]);//arr is array of string datatype
array[j] =Integer.parseInt(arr[j]);
if(array[i]>array[j])
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
for(int i=0;i<n;i++)
System.out.println(array[i]);
}
}
Error: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Solution.main(Solution.java:23)
最佳答案
更改行for(int j=0;j<n;i++)
至for(int j=0;j<n;j++)
关于java - JAVA排序时运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462677/