编程3-5中中的疑问

编程3-5中中的疑问

老师,你好!我想问问在这个编程题中怎样将接口实现方法与主方法放在同一个类中呢?因为在之前的教学视频中是将接口实现方法与主方法放在不同的类中的,这个编程练习是怎样处理这点的呢?麻烦,谢谢!0.0

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

3-5的意思是说,在你的主方法StudentTest.java中implements Comparator,然后实现compare()方法。这个Comparator是系统的不是自己定义的。祝:学习愉快

  • 慕虎8754231 提问者 #1
    //实现Comparator接口 public class StudentTest{ //实现接口中的方法 public class StudentComparator implements Comparator<Student> { public static void main(String[] args){ //定义Student类的对象 Student peter = new Student(40,20,"peter"); Student angle = new Student(28,5,"angle"); Student tom = new Student(35,18,"tom"); //将对象添加到List中 List<Student> studentList = new ArrayList<Student>(); studentList.add(peter); studentList.add(anglr); studentList.add(tom); //输出排序前的数据 System.out.println("按名字排序前:"); for (Student student: studentList) { System.out.println(student + " "); } //排序 Collections.sort(studentList, new StudentComparator()); //输出排序后的数据 System.out.println("按名字排序后:"); for (Student student: studentList) { System.out.println(student + " "); } @Override public int compare(Student o1,Student o2) { // 按名字进行升序排列 String name1=o1.getStudentNam(); String name2=o2.getStudentNam(); int n=name1.compareTo(name2); return n; } } } }
    2018-03-19 16:53:34
提问者 慕虎8754231 2018-03-19 17:33:18
//实现Comparator接口
public class StudentTest{
    
    //实现接口中的方法
    public class NameComparator implements Comparator<Student>
		public int compare(Student o1,Student o2) {
		// 按名字进行升序排列
		String name1=o1.getStudentNam();
		String name2=o2.getStudentNam();
		int n=name1.compareTo(name2);
		return n; 
		}
	}
    public static void main(String[] args){
        //定义Student类的对象
        Student peter = new Student(40,20,"peter");
        Student angle = new Student(28,5,"angle");
        Student tom = new Student(35,18,"tom");
        //将对象添加到List中
        List<Student> studentList = new ArrayList<Student>();
        studentList.add(peter);
        studentList.add(angle);
        studentList.add(tom);
        //输出排序前的数据
        System.out.println("按名字排序前:");
		for (Student student: studentList) {
			System.out.println(student + "  ");
		}
        
        //排序
        Collections.sort(studentList, new StudentComparator());
        
        //输出排序后的数据
         System.out.println("按名字排序后:");
		for (Student student: studentList) {
			System.out.println(student + "  ");
		}
	}
}

我开始这样写的,还是通不过,老师看怎样处理呢?0.0

好帮手慕雪 2018-03-19 17:31:46
public class StudentTest implements Comparator<Student>{
     
    
    public static void main(String[] args){
        .......       
    
    }
    @Override
    public int compare(Student o1,Student o2) {
        // 按名字进行升序排列
        String name1=o1.getStudentNam();
        String name2=o2.getStudentNam();
        return name1.compareTo(name2);
    }
}

类似于这样的格式。

  • 提问者 慕虎8754231 #1
    像这样写的话怎样在主方法中调用这个方法对集合进行排序呢?
    2018-03-19 17:35:23
  • 好帮手慕雪 回复 提问者 慕虎8754231 #2
    Collections.sort(studentList, new StudentComparator());改成 Collections.sort(studentList, new StudentTest());不就行了嘛
    2018-03-19 17:47:45
  • 提问者 慕虎8754231 回复 好帮手慕雪 #3
    嗦嘎,谢谢老师,哈哈
    2018-03-19 18:12:32
提问者 慕虎8754231 2018-03-19 16:54:13
//实现Comparator接口
public class StudentTest{
    
    //实现接口中的方法
    public class StudentComparator implements Comparator<Student> {
    public static void main(String[] args){
        //定义Student类的对象
        Student peter = new Student(40,20,"peter");
        Student angle = new Student(28,5,"angle");
        Student tom = new Student(35,18,"tom");
        //将对象添加到List中
        List<Student> studentList = new ArrayList<Student>();
        studentList.add(peter);
        studentList.add(anglr);
        studentList.add(tom);
        //输出排序前的数据
        System.out.println("按名字排序前:");
		for (Student student: studentList) {
			System.out.println(student + "  ");
		}
        
        //排序
        Collections.sort(studentList, new StudentComparator());
        
        //输出排序后的数据
         System.out.println("按名字排序后:");
		for (Student student: studentList) {
			System.out.println(student + "  ");
		}
		@Override
		public int compare(Student o1,Student o2) {
		// 按名字进行升序排列
		String name1=o1.getStudentNam();
		String name2=o2.getStudentNam();
		int n=name1.compareTo(name2);
		return n;
	}
    }
    }
}

麻烦看看呢?

  • 1)public class StudentTest或Student直接implements Comparator<Student>就行了,为什么还新建一个StudentComparator啊。2)public int compare(Student o1,Student o2)怎么放到main()中了?它属于某个类的类方法。并且方法是不能嵌套定义的。3) studentList.add(anglr);传错了吧应该是angle
    2018-03-19 17:12:26
  • 提问者 慕虎8754231 回复 好帮手慕雪 #2
    额,麻烦老师直接把这个public class StudentTest()类粘贴出来我看看呢?就是这里不清楚怎样把处理0.0
    2018-03-19 17:18:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师