当前位置: 代码迷 >> Eclipse >> 【初学者】简单的Java排序
  详细解决方案

【初学者】简单的Java排序

热度:28   发布时间:2016-04-23 13:53:04.0
【菜鸟求助】简单的Java排序
[code=Java][/code]public class ArrayOrder {
static String [] names={"zhangsan","lisi","wangwu","zhaoliu"};
static String [] courses={"java","c++","oracle","JDBS","jsp"};
static int [][] scores={
{87,73,65,92,76},
{65,71,89,82,70},
{71,54,98,66,74},
{81,78,89,45,16}
};

public static void main(String[] args) {
Scanner sca=new Scanner(System.in);
System.out.println("请输入要对哪门课程的分数进行排序:");
String course=sca.next();
输出。。。。。。
  System.out.println("请输入要对哪名同学的总分数进行排序:");
  String name=sca.next();
  输出。。。。。。
}
//编写两个函数ordercourses、ordersum,按照从小到大进行排序
//要求输出时为两列,左边一列为姓名,右边一列为成绩

------解决方案--------------------
使用集合类构造比较器 我的博客有
------解决方案--------------------
for example
Java code
public class ArrayOrder {    static String [] names={"zhangsan","lisi","wangwu","zhaoliu"};    static String [] courses={"java","c++","oracle","JDBS","jsp"};    static int [][] scores={        {87,73,65,92,76},        {65,71,89,82,70},        {71,54,98,66,74},        {81,78,89,45,16}    };     public static int find(String[] source, String key) {        if (key == null) {return -1;}        int index = -1;        for (int i=0; i<source.length; i++) {            if (source[i].equalsIgnoreCase(key)) {                index = i;                break;            }        }        return index;    }        public static void ordercourses(String course) {        int index = find(courses, course);         if (index == -1) {            System.out.println("course not found.");             return;        }        for (int i=0; i<scores.length; i++) {            for (int j=1; j<scores.length-i; j++) {                if (scores[j-1][index] > scores[j][index]) {                    String name = names[j-1];                    names[j-1] = names[j];                    names[j] = name;                    int[] tmp = scores[j-1];                    scores[j-1] = scores[j];                    scores[j] = tmp;                }            }        }        System.out.printf("%s sort:\n", course);        for (int i=0; i<scores.length; i++) {            System.out.printf("name=%s, score=%d\n", names[i], scores[i][index]);        }    }        public static void ordersum(String name) {        int index = find(names, name);        if (index == -1) {            System.out.println("name not found.");            return;        }        for (int i=0; i<scores[index].length; i++) {            for (int j=1; j<scores[index].length-i; j++) {                if (scores[index][j-1] > scores[index][j]) {                    String course = courses[j-1];                    courses[j-1] = courses[j];                    courses[j] = course;                    for (int k=0; k<scores.length; k++) {                        int score = scores[k][j-1];                        scores[k][j-1] = scores[k][j];                        scores[k][j] = score;                    }                }            }        }        System.out.printf("%s sort:\n", name);        for (int i=0; i<scores[index].length; i++) {            System.out.printf("course=%s, score=%d\n", courses[i], scores[index][i]);        }            }    public static void main(String[] args) {        Scanner sca=new Scanner(System.in);        System.out.println("请输入要对哪门课程的分数进行排序:");        String course=sca.next();        ordercourses(course);         System.out.println("请输入要对哪名同学的总分数进行排序:");         String name=sca.next();        ordersum(name);    }}