java代码小疑问

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++;

        }

        }

    }

    

    

    

    

    

}

*/


左右手年华
浏览 1467回答 2
2回答

Caballarii

如果在for循环的括号里定义int i,int j,那么i和j的作用域就只在这个循环内,循环外是不可以用的,所以你第二个for循环里也得写成int i=0。建议不同的循环里使用不同的循环变量,否则容易冲突出错

qq_灵魂深处_1

一楼回答,完美
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java