想实现根据总分来排出名次,但是不知道哪里错了

import java.util.Scanner;
public class FinallText {

	public static void main(String[] args) {
		 Scanner sc=new Scanner(System.in);
	        //定义学生总数
	        int n=3;
	        //定义学生科目数
	        int m=2;
	        //创建学生类型的数组,设置每一个学生
	        Student[] stu=new Student[3];
	        for(int i=0;i<n;i++){
	        	//创建每个对象为一个学生
	            stu[i]=new Student(m);
	            /*只有一个next表示输入字符串
	             * 这里调用name和num方法来输入学生名字和学号 */
	            System.out.println("请输入第"+(i+1)+"名学生的姓名");
	            stu[i].name=sc.next();
	            System.out.println("请输入第"+(i+1)+"名学生的学号");
	            stu[i].num=sc.next();
	            for(int j=0;j<m;j++){
	                System.out.println("请输入第"+(i+1)+"名学生的第"+(j+1)+"科成绩");
	                stu[i].Grade[j]=sc.nextInt();
	            }
	        }
	        Calculate cal=new Calculate();
	        cal.getSort(stu,n,m);
	    }
	}


public class Student {
	    //定义名字、各科分数(数组,因为有六科)、学号以及总分的变量
	    String name;
	    int[] Grade;
	    String num;
	    int sum;
	    Student(int m) {
	        this.Grade=new int[m];
	    }
	    //定义名字、学号、总分的方法
	    public void setName(String name){
	        this.name=name;
	    }
	    public void setNum(String num){
	        this.num=num;
	    }
	    public int getSum(int m) {
	        for (int i = 0; i < m; i++) {
	            this.sum += Grade[i];
	        }
	        return this.sum;
	    }
	}


public class Calculate {
	int i;
	//设置分类输出的方法
    public void getSort(Student[] s,int n,int m) {
    	//设置学生,分配信息并且进行总名次排序
        Student x;
        for (this.i = 1; i < n; i++) {
            for (int j = 0; j < n-1; j++) {
            	//调用sum方法来排序
            	if (s[j].sum < s[j + 1].sum) {
                    x = s[j];
                    s[j] = s[j + 1];
                    s[j + 1] = x;
                }
            }
        }
        System.out.println("    姓名       学号     总分  排名");
        for (int j = 0; j < n; j++) {
        	//%s是占位符,输出的是字符串类型,数字表示占了几个位置
            System.out.printf("%6s %10s %6d %2s",s[j].name,s[j].num,s[j].getSum(m),(j+1));
            System.out.println("");
        }
    }
}

package ask;

import java.util.Scanner;

public class FinallText {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// 定义学生总数
		int n = 3;
		// 定义学生科目数
		int m = 2;
		// 创建学生类型的数组,设置每一个学生
		Student[] stu = new Student[3];
		for (int i = 0; i < n; i++) {
			// 创建每个对象为一个学生
			stu[i] = new Student(m);
			/*
			 * 只有一个next表示输入字符串 这里调用name和num方法来输入学生名字和学号
			 */
			System.out.println("请输入第" + (i + 1) + "名学生的姓名");
			stu[i].name = sc.next();
			System.out.println("请输入第" + (i + 1) + "名学生的学号");
			stu[i].num = sc.next();
			for (int j = 0; j < m; j++) {
				System.out.println("请输入第" + (i + 1) + "名学生的第" + (j + 1) + "科成绩");
				stu[i].Grade[j] = sc.nextInt();
			}
		}
		Calculate cal = new Calculate();
		cal.getSort(stu, n, m);
	}
}

class Student {
	// 定义名字、各科分数(数组,因为有六科)、学号以及总分的变量
	String name;
	int[] Grade;
	String num;
	int sum;

	Student(int m) {
		this.Grade = new int[m];
	}

	// 定义名字、学号、总分的方法
	public void setName(String name) {
		this.name = name;
	}

	public void setNum(String num) {
		this.num = num;
	}

	public int getSum(int m) {
		this.sum = 0;
		for (int i = 0; i < m; i++) {
			this.sum += Grade[i];
		}
		return this.sum;
	}
}

class Calculate {

	// 设置分类输出的方法
	public void getSort(Student[] s, int n, int m) {
		// 设置学生,分配信息并且进行总名次排序
		Student x;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j < n; j++) {
				s[i].getSum(m);
				s[j].getSum(m);
				// 调用sum方法来排序
				if (s[i].sum < s[j].sum) {
					x = s[j];
					s[j] = s[i];
					s[i] = x;
				}
			}
		}
		System.out.println("    姓名       学号     总分  排名");
		for (int j = 0; j < n; j++) {
			// %s是占位符,输出的是字符串类型,数字表示占了几个位置
			System.out.printf("%6s %10s %6d %2s", s[j].name, s[j].num, s[j].getSum(m), (j + 1));
			System.out.println("");
		}
	}
}

请输入第1名学生的姓名
1
请输入第1名学生的学号
1
请输入第1名学生的第1科成绩
20
请输入第1名学生的第2科成绩
20
请输入第2名学生的姓名
2
请输入第2名学生的学号
2
请输入第2名学生的第1科成绩
30
请输入第2名学生的第2科成绩
30
请输入第3名学生的姓名
3
请输入第3名学生的学号
3
请输入第3名学生的第1科成绩
10
请输入第3名学生的第2科成绩
10
    姓名       学号     总分  排名
     2          2     60  1
     1          1     40  2
     3          3     20  3
 

哇!!!谢谢大佬!!!帮大忙了!!!