问答详情
源自:7-1 编程练习

我的思路跟答案不同,但是冒泡法部分有点问题

代码及思路如下:

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

        

    int scores[] = {89,-23,64,91,119,52,73};

    HelloWorld arr = new HelloWorld();

    arr.showTop3(scores);

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    

    public void showTop3(int[] scores){

        int tempDataBox[] = {0,0,0,0,0,0,0};

        for (int i = 0;i < tempDataBox.length;i++){

            if (scores[i] < 100 && scores[i] > 0){

                tempDataBox[i] = scores[i];

                //System.out.println(tempDataBox[i]);

                }

        }

        

  //关尹子注:

  //解决思路与题设不同。

  /*1 初始化一个数组,存储预定成绩。

    2 初始化一个临时数组,全部设置为0。判断最初数组中数字有效性,如果有效就把值赋予临时数组中对应下标的元素。

    3 利用冒泡法,对临时数组进行排序。

    4 输出最大的三个值。

    问题:冒泡法写不出来了。*/

    for (int j = 0;j < tempDataBox.length - 1;j++){

            for(int k = 0;k < tempDataBox.length - 1 - j;k++){

                if (tempDataBox[k] < tempDataBox[ k + 1])

                int temp = tempDataBox[k];

                tempDataBox[k] = tempDataBox[k + 1];

                tempDataBox[k + 1] = temp;

                

                System.out.println("排序后的前三位成绩为:"+tempDataBox[4]+tempDataBox[5]+tempDataBox[6]);

            }

           

            

        }

    

    }

    

}

问题:

报错,提示 冒泡法过程中 temp不能被声明,不知道为什么?求大神赐教。

提问者:关尹子学码记 2019-04-17 22:15

个回答

  • 关尹子学码记
    2019-04-18 09:39:01

    自问自答:

    错误一:冒泡法部分的if语句,没有大括号。

    错误二:冒泡法的写法,与正常人思路不一致。

    目前虽然最后已经编译通过了,但是冒泡法写的很拧巴。