这个程序的想法是将输入数组从最小数字排序到最大数字。
所以,我在整体方法上遇到了一些问题,并且得到了结果'在for循环退出后记住数组。当我尝试调用该方法时,似乎并没有保存结果。
另外,由于某些原因,我得到0和13作为结果数组的值,即使这些不是原始数组的值,我也不确定它们来自何处或如何获得他们。
public static int[] sortMe(int[] inputArray){
int[] result = new int[inputArray.length];
for(int i = 0; i < inputArray.length - 1; i++){
for(int j=0; j <inputArray.length - 1; j++){
if (inputArray[j] > inputArray[j+1]){
int temp = inputArray[j];
result[j] = inputArray[j+1];
result[j+1] = temp;
}
}
return result;
}
答案 0 :(得分:2)
您的方法返回结果。 因此,从方法外部调用它并将结果分配回原始数组。像这样:
int[] myArray = new int[]{3,1,5,4,2};
myArray = sort(myArray);
您的方法存在一些问题:
1)正在发生0值,因为您没有正确排序,并且在创建初始结果数组时,默认情况下,数组中的所有值都被初始化为零。
2)另外,根本不需要中间结果数组,只需直接修改inputArray。
3)此外,您的return语句位于外部for循环中,导致它仅在迭代一次后返回结果。它需要移动到两个for循环之外。
我已使用以下工作结果调整了您的方法代码:
public static int[] sortMe(int[] inputArray) {
for (int i = 0; i < inputArray.length; i++) {
for (int j = 0; j < inputArray.length - 1; j++) {
if (inputArray[j] > inputArray[j + 1]) {
int temp = inputArray[j];
inputArray[j] = inputArray[j + 1];
inputArray[j + 1] = temp;
}
}
}
return inputArray;
}
答案 1 :(得分:0)
代码int[] result = new int[inputArray.length];
创建一个新数组并将所有元素初始化为0.因此,如果某些连续元素已经排序,则它们不会处理内部循环,并且结果数组的这些元素保持为0 。
例如,对于数组{4,6,1,9},我得到{0,1,6,0}作为结果。
对于您的情况,最好将输入数组的内容复制到结果数组中。
此外,仅检查连续元素并不适用于您的情况。 对于数组{4,6,1,9},仅比较连续元素将得到{4,1,6,9}。因此,需要考虑采用不同的方法。
其次,似乎该方法抛出了一个编译错误,因为它在关闭&#39; i&#39;之后错过了一个return语句。 for loop。