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.next();      
     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

为什么我想输入个学生信息,但是只能输入一个?而且我想问一下,如果我在主类里用一维数组的形式能不能调用student类里面的函数?谢谢!

你试一试把输入姓名学号的那个for循环改一下,里面全不要,设name=sc.nextline()等等全都这样,加一个student newstu=new student(姓名,学号。。),把输入的参数穿进去,再stu[i]=newstu,记得把你的学生类加一个带参构造方法。在外面,只能用手机打字,不容易呀,可以先给我个采纳不,如果不行回去我再给你试试代码>﹏<

因为你的循环是从k =1开始的啊,数组是从0开始的,你第一条数据占用stu[1],第二条就要去用stu[2], 可是你只声明长度为2的数组,所以会报空指针