java里面一维数组引用其他类为什么不能输入


package javaapplication19;
import java.util.Scanner;
public class JavaApplication19 { 
      public static void main(String[] args) {   
     System.out.print("**********************\n");        System.out.print("欢迎进入学生信息管理系统\n");     
   System.out.print("**********************\n");        Scanner sc=new Scanner(System.in);      
  int n;    
    System.out.print("请输入学生人数:");
        n=sc.nextInt();  
      student stu[]=new student[n];   
     int k;    
    for(k=1;k<=n;k++)        {     
      System.out.print("请输入学生"+k+"的姓名,学号,专业,课程");      
     stu[k].name=sc.nextLine();     
      stu[k].sno=sc.nextInt();   
        stu[k].subject=sc.next();      
     stu[k].course=sc.next();     
      System.out.print("\n");    
    }     
   boolean c=true;    
   do        {      
      System.out.print("请输入对几号学生信息进行操作:");    
        int x;     
       x=sc.nextInt();      
  System.out.print("请输入想要进行的操作:\t1:获得学号 2:修改学号 3:获得所学课程 4:修改所修课程");    
    int b;  
      b=sc.nextInt();    
    switch(b)        {      
       case 1:stu[x].getsno();c=false;break;             case 2:stu[x].modifysno();c=false;break;          case 3:stu[x].getcourse();c=false;break;              case 4:stu[x].modifycourse();break;    
          default:System.out.print("您的输入有误");
c=true;    
    }         
       }while(c);  
  }   
 }
class student{    
String name;  
  int sno; 
   String subject;    
String course;  
  void getsno()    {    
    System.out.print("请输入想要获得学号的学生姓名:");   
     String n;    
    Scanner reader=new Scanner(System.in);        n=reader.nextLine();  
      System.out.print("学号为:"+sno+"\n");            }  
  void modifysno()    {    
    System.out.print("请输入想要修改学号的学生姓名:"); 
       String n;   
     Scanner reader=new Scanner(System.in);         n=reader.nextLine(); 
        int sno;    
    System.out.print("请输入修改后的学号:");        sno=reader.nextInt();    
    System.out.print("修改后的学号为:"+sno+"\n");   
 }   
 void getcourse()    {   
    System.out.print("请输入想要获得课程的学生姓名:");  
      String n;       
 Scanner reader=new Scanner(System.in);        n=reader.nextLine();   
     System.out.print(n+"所选修的课程为:"+course+"\n");  
  } 
   void modifycourse()    {   
      System.out.print("请输入想要修改课程的学生姓名:");    
    String n;    
    Scanner reader=new Scanner(System.in);         n=reader.nextLine();    
     String course;      
   System.out.print("请输入修改后的课程名称:");   
      course=reader.nextLine();   
      System.out.print("修改后的课程为:"+course+"\n");   
 }     
   }

运行后的状况是这样的

img

img

应该这么写,
for(k=1;k<=n;k++) {

  System.out.print("请输入学生"+k+"的姓名,学号,专业,课程");      

name=sc.nextLine();     

 sno=sc.nextInt();   

 subject=sc.next();      

course=sc.next();
stu[k]=new student(name, sno,subject, course)
System.out.print("\n");

}     

欢迎采纳;

nextLine会吸取控制台输入字符及前后的空格/tap键,回车截止
可以用next试试