我是Java新手。 我尝试做我的任务之一,但我无法弄清楚为什么我的结果仍然无法排序。
我有一个提示值(参数)20 10 30 60 55,我想对它进行排序。 我写了两个循环,并将提示值(字符串)转换为Integer。
结果:(未分类)
20 10 三十 60 55 线程" main"中的例外情况java.lang.ArrayIndexOutOfBoundsException:5 在question2.SortedArray.main(SortedArray.java:29)
这是我写的代码:
int temp = 0;
int array[] = null;
int array2[];
for(int i=0; i<args.length; i++){
int a = Integer.parseInt(args[i]);
array = new int[a];
for(int j=0; j<args.length; j++){
int b = Integer.parseInt(args[i]);
array2 = new int[b];
if(array[i]>array2[j])
temp = array2[j];
array2[j] = array[i];
array[i] = temp;
}
}
for (int i = 0; i < array.length; i++)
{
System.out.println(args[i].toString());
}
我可以理解这个代码我可以在线下面
int tempVar;
for (int i = 0; i < numbers.length; i++)
{
for(int j = 0; j < numbers.length; j++)
{
if(numbers[i] > numbers[j])
{
tempVar = numbers [j ];
numbers [j]= numbers [i];
numbers [i] = tempVar;
}
}
}
for (int i = 0; i < numbers.length; i++)
{
System.out.print(numbers[i]+" ");
}
}
答案 0 :(得分:4)
首先,将String
args
数组转换为int
数组值。然后排序并显示values
。你一直在排序数组(按数组int值调整大小),然后打印参数(你没有排序)。所以,像
int[] values = new int[args.length];
for (int i = 0; i < args.length; i++) {
values[i] = Integer.parseInt(args[i]);
}
int temp = 0;
for (int i = 0; i < values.length - 1; i++) {
for (int j = i + 1; j < values.length; j++) {
if (values[i] > values[j]) {
temp = values[j];
values[j] = values[i];
values[i] = temp;
}
}
}
System.out.println(Arrays.toString(values));
答案 1 :(得分:1)
首先获取数组的整数。
int[] yourArray = { 20, 10, 30, 60, 55 };
for (int i = 0; i < yourArray.length; i++) {
for (int j = 0; j < yourArray.length - 1; j++) {
// swap
if (yourArray[i] < yourArray[j]) {
int temp = yourArray[i];
yourArray[i] = yourArray[j];
yourArray[j] = temp;
}
}
}
for (int i : yourArray)
System.out.println(i);
<强>输出强>
10 20 三十 55 60
答案 2 :(得分:1)
您需要初始化数组以保存提示值
int [] yourArray = {2,3,4 5,};
您不需要第二个数组来将值排序为临时int以保存正在移动的值。
下面的语句如果需要用{}括起来,否则所有它将会运行到第一个分号然后退出if。
基本上你在第二部分粘贴的代码是检查值i的元素是否大于元素j的值。如果值更大,则将j与i交换。
for (int i = 0; i < numbers.length; i++)
{
for(int j = 0; j < numbers.length; j++)
{
if(numbers[i] > numbers[j]) //if element at i is greater than element a j
{
tempVar = numbers [j ]; //store the number at element j in temp
numbers [j]= numbers [i];// set the number at element i to element j
numbers [i] = tempVar;// set the number at temp to element
}
} // does this for each element until no element i greater than j
}