如何从Java中的方法返回数组

时间:2014-09-08 14:38:06

标签: java arrays sorting methods return

private static int findLowestMark(int grade[], int lowestMark []){ 
       int holdingVariable;
       boolean sorted = false;

       while (sorted == false){
           sorted = true;
            for ( int i = 0; i < grade.length-1; i++){
               if ( grade[i] < grade[i+1]){
                   holdingVariable = grade[i+1];
                   grade[i+1] = grade [i];
                   grade[i] = holdingVariable;
                   sorted = false;
               }
            }
       }

       for (int number : grade){
           System.out.println("The sorted values are" + number); 
       }
       return grade[i];
    }

大家好,

希望你们中的一个能在这里帮助我,我想我已经看了太长时间,我无法弄清楚如何解决它。

基本上我所要做的就是返回等级[i]。但是,当我试图这样做时,我得到了;

无法找到符号变量我编译时错误。

现在我知道这是因为我已经在for循环中初始化并声明了i,所以它不能在循环之外使用。

然后我想到将for循环更改为while循环并在循环之外声明我:

int i = 0; // altered here
while (sorted == false){
    sorted = true;
     while (i < grade.length-1){ //altered here
          i++;                    // altered here
          if ( grade[i] < grade[i+1]){
               holdingVariable = grade[i+1];
               grade[i+1] = grade [i];
               grade[i] = holdingVariable;
               sorted = false;
          }
    }
}

它似乎有效,但是当我运行该程序时,排序算法不再按顺序对数字进行排序。

此外,我们不允许使用除扫描仪之外的任何导入库。

我还是比较新的编程,也许2个月了,所以如果你能用外行的话来解释一些必要的东西,那将是很棒的。

由于

4 个答案:

答案 0 :(得分:0)

不要退货。在java 中,对象的引用按值传递。这里对数组所做的更改将反映在其他方法中。

答案 1 :(得分:0)

只返回已排序数组的最后一个值:

   private static int findLowestMark(int grade[], int lowestMark []){ 

   int holdingVariable;
   boolean sorted = false;


   while (sorted == false){
       sorted = true;
        for (int i = 0; ; i < grade.length-1; i++){

           if ( grade[i] < grade[i+1]){
               holdingVariable = grade[i+1];
               grade[i+1] = grade [i];
               grade[i] = holdingVariable;
               sorted = false;
           }

        }
   }


   for (int number : grade){
       System.out.println("The sorted values are" + number); 
   }
   return grade[grade.length-1];
}

答案 2 :(得分:0)

private static int[] findLowestMark(int grade[], int lowestMark []){ 
   int holdingVariable;
   boolean sorted = false;

   while (sorted == false){
       sorted = true;
        for ( int i = 0; i < grade.length-1; i++){
           if ( grade[i] < grade[i+1]){
               holdingVariable = grade[i+1];
               grade[i+1] = grade [i];
               grade[i] = holdingVariable;
               sorted = false;
           }
        }
   }

   for (int number : grade){
       System.out.println("The sorted values are" + number); 
   }
   return grade;
}

答案 3 :(得分:0)

尝试移动&#34; i ++&#34;到while循环结束? 在for循环中,&#34; i ++&#34;将在循环中的代码之后执行。