错误: 不兼容的类型: Student无法转换为String是什么意思?如何解决?

这是出错的界面,萌新开始学java,错误老多了 

题目要求是写一个打印学生成绩表的程序,成绩表包括学号,姓名,成绩,要求用list和map实现

下面是我的代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.TreeMap;

public class StuScore{
    public static void main(String args[])
    {
        System.out.println("学生成绩打印程序");
     String[] names={"刻晴","甘雨","胡桃","凝光","魈","钟离","行秋","重云","辛焱","公子","七七","香菱","北斗","班尼特","琴","凯亚","丽莎","安柏","雷泽","可莉","温迪","迪奥娜","芭芭拉","莫娜","砂糖","菲谢尔","罗莎莉亚","烟绯","旅行者","派蒙"};
   
     
        ArrayList<String> a=new ArrayList<String>();
        for(int i=0;i<30;i++)
       {
  a.add(new Student(i+1,(int) (40*Math.random()+60),names[i]));
        }
      // Collections.sort(a, new Sortbyscore());
for(Student sd:a)
      System.out.println(a);                  
    }
}
class Student{
     int num,score;
   String name;
public Student(int num,int score,String name)
   {
    this.num=num;
    this.name=name;
    this.score=score;
    }
public String toString()
   {
     return 201303+this.num+"\t"+this.name+"\t"+this.score;
   }
}

/*class Sortbyscore implements Comparator<Student>{
 
    @Override
    public int compare(Student s1, Student s2) {
        
        if(s1.score>s2.score)
            return 1;
        if(s1.score<s2.score)
            return -1;
        if(s1.score==s2.score)
            return s1.name.compareTo(s2.name);
        return 0;        
        
    }
}
*/
    

a.add(new Student(i+1,(int) (40*Math.random()+60),names[i]));

a是string数组啊,你怎么能把Student类对象加入进去呢?你可以定义Student的数组啊

     ArrayList<String> a=new ArrayList<String>();

改成

     ArrayList<Student> a=new ArrayList<Student>();