java程序报错,求大神找bug

package arraysofobjects;
import java.util.Scanner;
public class arraysofobjects {

public static void main(String[] args)
{
    Scanner input=new Scanner(System.in);
    students[] stu=new students[4];
    String name;
    int grade;

    for(int i=0;i<stu.length;i++)
    {
        name=input.nextLine();
        grade=input.nextInt();
        stu[i]=new students(name,grade);
    }

    for(int i=0;i<stu.length;i++)
    {
        System.out.printf("name:%s\tgrades:%d\n",stu[i].name(),stu[i].grades());
    }
}

}

package arraysofobjects;

public class students {
private String _name;
private int _grades;

public students(String name,int grades)
{
this._name=name;
this._grades=grades;
}

public String name()
{
return this._name;
}
public int grades()
{
return this._grades;
}
}

输入两行就开始报错了

name=input.nextLine(); 改为 name=input.next();

把第一行赋值name=nextLine修改成nextString

把报文贴出来,一下就懂了

JAVA中对输出到屏幕的语法做了优化
比如,我要输出一个值,我可以写成
int i;
i = 10;
System.out.println("i的值为" + i);
不再使用%d,可以直接将变量写在双引号外面

输入字符串是掉Scanner的next()

你这个输出就是c的输出,java 中不用这么麻烦吧