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个月了,所以如果你能用外行的话来解释一些必要的东西,那将是很棒的。
由于
答案 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;将在循环中的代码之后执行。