ご参考までに、最初に最も小さい数値で配列を並べ替えようとしているのではなく、最初に 0 に最も近い数値で配列リストを表示して配列を並べ替えようとしています。
配列内の一部の要素では機能しますが、配列を逆方向に移動する必要がある場合は機能しません..境界外の例外をスローするだけです
ここに私のコードがあります:
package SSTF;
public class test2 {
public static void main (String[] args)
{
int[] temp_array = {9, 22, 3, -4, 5, 8};
for(int i =0; i<temp_array.length; i++)
{
System.out.print(temp_array[i] + " ");
}
System.out.println("\n\nNumbers closest to 0:\n");
closestToZero(temp_array);
}
public static void closestToZero(int[] array)
{
int num = array[0];
int absNum = Math.abs(num);
for(int i = 1; i < array.length; ++i)
{
int newAbs = Math.abs(array[i]);
if(newAbs < absNum)
{
absNum = newAbs;
num = array[i];
for(int j=0; j<array.length; j++)
{
System.out.print(array[i+j] + " ");
}
}
}
}
}
修正方法がわからないので、それがほんの小さなものであり、誰かが助けてくれることを本当に願っています:S
出力:
9 22 3 -4 5 8
Numbers closest to 0:
3 -4 5 8 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at SSTF.test2.closestToZero(test2.java:42)
at SSTF.test2.main(test2.java:18)