2014-11-07 5 views
0

Я сделал массив из класса ученикавыстроены из одного метода и получить от другого метода

student [] stu=new student[100]; 

Я в классе student op, и я хочу, чтобы вставить имя и код из метода insert в массив stu.

До сих пор все работало, но когда я хочу, чтобы мое имя и код из другого метода, как удалить в классе студент цит, это показывает, что мой массив stu пуст. В чем проблема? если я удалю строку
stu [0] = new student(); in удалить метод Net beans показать ошибку!

public class studentop { 

    student [] stu=new student[100]; 

    private int counter=0; 
    int con=0; 
    public int edd; 

    public void insert(int edame){ 

     String ans; 
     Scanner input=new Scanner(System.in); 
     for(int i=edame;i<100;i++){ 
      System.out.println("add more student? "); 
      ans=input.next(); 
      if(ans.equals("y")){ 

       String thename; 

       stu[i]=new student(); 
       System.out.println("insert name "+(i+1)+" : "); 

       thename = input.next(); 
       stu[i].setname(thename); 

       System.out.println("insert code "+(i+1)+" : "); 
       int thecode; 
       thecode = input.nextInt(); 
       stu[i].setcode(thecode); 

       System.out.println(stu[i].getcode()); 

       for(int m=0;m<=3;m++){ 
        System.out.println("add mark "+(m+1)+" ? "); 
        String ans2; 
        ans2=input.next(); 
        if(ans2.equals("y")){ 
         switch (m){ 

          case 0: 
           System.out.println("mark"+(m+1)+" : "); 
           int mark; 
           mark=input.nextInt(); 
           stu[i].setmark(mark); 
           break; 

          case 1: 
           System.out.println("mark"+(m+1)+" : "); 
           // int mark; 
           mark=input.nextInt(); 
           stu[i].setMark2(mark); 
           break; 

          case 2: 
           System.out.println("mark"+(m+1)+" : "); 
           // int mark; 
           mark=input.nextInt(); 
           stu[i].setMark3(mark); 
           break; 

          case 3: 
           System.out.println("mark"+(m+1)+" : "); 
           // int mark; 
           mark=input.nextInt(); 
           stu[i].setMark4(mark); 
           break; 
         } 
        } 
        else{ 
         break; 
        } 
       } 
       System.out.println(stu[i].getname());//aztarighe get name az 
      } 
      else { 
       edame=i; 
       edd=edame; 
       break; 
      } 
     }//end for 
    } 
    public void delete(){ 
     stu[0]=new student();//if I delet this line it shows an error! 
     System.out.println(stu[0].getcode()); 
    } 
} 

и вот мой класс студент

public class student { 
    public String name; 
    public int code; 
    public double mark; 
    private double mark2; 
    private double mark3; 
    private double mark4; 

    public void setname(String sourcename){ 
     name=sourcename; 
    } 
    public String getname(){ 
     return name; 
    } 
+0

Пожалуйста, отформатируйте свой код. Это невозможно прочитать. – user2336315

ответ

0

Это не пусто, однако, когда вы пытаетесь получить студент из массива, который вы создаете новый студент, который почему оно, похоже, пусто:

public void delete() 
{ 
    stu[0]=new student(); //here you're deleting your old student 
    System.out.println(stu[0].getcode()); 
} 

Вместо этого вы можете использовать:

public void delete() 
{ 
    System.out.println(stu[0].getcode()); 
} 
+0

Если я делаю это, чистая фасоль показывает ошибку! –

+0

Какая ошибка вы получаете? – Canedus

+0

Ошибка выполнения: Исключение в потоке «main» java.lang.NullPointerException \t at daneshjoo3.studentop.delete (studentop.java:122) Java Результат: 1 BUILD SUCCESSFUL (общее время: 23 секунды), а затем выйти –

Смежные вопросы