public class HelloWorld { //完成 main 方法 public static void main(String[] args) { int [] scores={89,-23,64,91,119,52,73}; HelloWorld hello=new HelloWorld(); hello.sco(scores); } //定义方法完成成绩排序并输出前三名的功能 public void sco(int scores[]){ int score,i,j; for(i=0;i<scores.length-1;i++){ for(j=i;j<scores.length;j++){ if(scores[j]>scores[i]){ score=scores[i]; scores[i]=scores[j]; scores[j]=score; } } } System.out.println("前三名为:"); for(i=0,j=0;j<3;i++){ if(scores[i]>=0&&scores[i]<=100){ System.out.println(scores[i]); j++; } } } }//下面的为什么不可以?/*public class HelloWorld { //完成 main 方法 public static void main(String[] args) { int [] scores={89,-23,64,91,119,52,73}; HelloWorld hello=new HelloWorld(); hello.sco(scores); } //定义方法完成成绩排序并输出前三名的功能 public void sco(int scores[]){ int score;//就只是把i,j的声明放在了for循环里面,进行编译就报错,大概是说第二个for里不能使用i,j,为什么 for(int i=0;i<scores.length-1;i++){ for(int j=i;j<scores.length;j++){ if(scores[j]>scores[i]){ score=scores[i]; scores[i]=scores[j]; scores[j]=score; } } } System.out.println("前三名为:"); for(i=0,j=0;j<3;i++){ if(scores[i]>=0&&scores[i]<=100){ System.out.println(scores[i]); j++; } } } }*/
2 回答
已采纳
Caballarii
TA贡献1123条经验 获得超629个赞
如果在for循环的括号里定义int i,int j,那么i和j的作用域就只在这个循环内,循环外是不可以用的,所以你第二个for循环里也得写成int i=0。建议不同的循环里使用不同的循环变量,否则容易冲突出错
添加回答
举报
0/150
提交
取消