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