【发布时间】:2014-11-01 19:45:03
【问题描述】:
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 循环并在循环之外声明 i,如下所示:
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 个月,所以如果你能在必要时用外行的术语解释事情,那就太好了。
谢谢
【问题讨论】:
-
不用对数组排序也能找到最低分。
-
您的方法不应该同时做两件事(找到最低标记并排序数组/返回它)。使用两种方法来做这两件事。
-
您的问题标题具有误导性 - 您的问题只是在您致电
return grade[i]时,i已超出范围。 -
@FlorentBayle 不能再同意了 - 一个名为“findLowestMark”的方法不应该改变传递的数组。
-
不清楚你到底想要什么 - 在你的问题中你声明你想从一个方法返回一个数组,但在你的解释中你想从数组中返回一个元素。你能澄清一下吗?
标签: java arrays sorting methods return