Java - 如何修改for循环中的数组并在for循环退出后记住它?

时间:2016-04-04 03:07:49

标签: java arrays sorting for-loop

这个程序的想法是将输入数组从最小数字排序到最大数字。

所以,我在整体方法上遇到了一些问题,并且得到了结果'在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;
}

2 个答案:

答案 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。