在Java中,如何从方法返回数组 private static int findLowestMark(int grade[],int lowestMark[]){ int保持变量; 布尔排序=假; while(排序==false){ 排序=真; 对于(int i=0;i

在Java中,如何从方法返回数组 private static int findLowestMark(int grade[],int lowestMark[]){ int保持变量; 布尔排序=假; while(排序==false){ 排序=真; 对于(int i=0;i,java,arrays,sorting,methods,return,Java,Arrays,Sorting,Methods,Return,大家好 我希望你们中的一个能帮我,我想我已经看太久了,我不知道怎么解决它 基本上我所要做的就是返回等级[I]。然而,当我尝试这样做时,我得到了 找不到符号变量i编译时错误 现在我知道这是因为我在for循环内初始化并声明了I,所以它不能在循环外使用 然后,我考虑将for循环更改为while循环,并在循环之外声明I,如下所示: private static int findLowestMark(int grade[], int lowestMark []){ int holdingV

大家好

我希望你们中的一个能帮我,我想我已经看太久了,我不知道怎么解决它

基本上我所要做的就是返回等级[I]。然而,当我尝试这样做时,我得到了

找不到符号变量i编译时错误

现在我知道这是因为我在for循环内初始化并声明了I,所以它不能在循环外使用

然后,我考虑将for循环更改为while循环,并在循环之外声明I,如下所示:

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];
    }
int i=0;//在这里改变
while(排序==false){
排序=真;
而(i
这似乎是可行的,但当我运行该程序时,排序算法不再按顺序对数字进行排序

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

我还是一个编程新手,大概2个月了,所以如果你能在必要的时候用外行的语言解释一下,那就太棒了


谢谢,不要退回任何东西。在java中,对对象的引用是通过值传递的。此处对数组所做的更改将反映在其他方法中。

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

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;
          }
    }
}
private static int findLowestMark(int grade[],int lowestMark[]){
int保持变量;
布尔排序=假;
while(排序==false){
排序=真;
对于(int i=0;i
私有静态int[]findLowestMark(int-grade[],int-lowestMark[]){
int保持变量;
布尔排序=假;
while(排序==false){
排序=真;
对于(int i=0;i
是否尝试将“i++”移动到while循环的末尾?
在for循环中,“i++”将在循环中的代码之后执行。

您可以在不排序数组的情况下找到最低标记。您的方法一次不应该做两件事(查找最低标记并排序数组/返回它)。使用两种方法来完成这两件事。你的问题标题是误导性的-你的问题只是当你调用
return grade[i]
@FlorentBayle非常同意时,
i
超出了范围-一种称为“findLowestMark”的方法不应改变传递的数组。不清楚您到底想要什么-在您的问题中,您声明希望从方法返回数组,但在您的解释中,您希望从数组返回元素。你能澄清一下吗?
   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];
}
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;
}