2014-02-25 27 views
-3

我写了这个程序,它没有错误地完成,但是当我输入(name-age-id)应该是一个对象时它没有输入到数组中! 有谁可以告诉我问题在哪里? :(运行错误/对象没有输入到数组

public class ClientClass { 
     public static Scanner read = new Scanner(System.in); 


     public static void main(String[] args) { 

      while (true) { 
       System.out.println("what do you want to do? \n a-add a baby. \n b-search for a baby \n c-Delet a baby. \n d-Display all babys.\n e-how many babys need inoculation \n f-exit"); 
       char f = read.next().charAt(0); 
       Kindergarten k = new Kindergarten("baby", 10); 


       if (f == 'a') { 

        System.out.println("enter the name :"); 
        String name1 = read.next(); 
        System.out.println("enter the id number :"); 
        int id1 = read.nextInt(); 

        BABY b = new BABY(name1, id1); 

        System.out.println("enter the age :"); 
        int age1 = read.nextInt(); 
        b.setage(age1); 
        k.add_b(b); 

       } 

       if (f == 'b') { 
        int v = -1; 
        System.out.println("enter the id number"); 
        int id1 = read.nextInt(); 

        v = k.srch_b(id1); 
        if (v == -1) 
         System.out.println("baby not found"); 
        else 
         System.out.println(k.toString()); 
       }//there is somthing miss 


       if (f == 'c') { 
        System.out.println("enter the id number"); 
        int id1 = read.nextInt(); 
        k.del_b(id1); 
       } 

       if (f == 'd') { 
        k.display_all(); 
       } 

       if (f == 'e') { 
        int s = k.num_b_inoculation(); 
        System.out.println("there is " + s + "baby need inoculation"); 
       } 

       if (f == 'f') 
        break; 
      } 
     } 
    } 


    class Kindergarten { 
     private String name; 
     private int currnt; 
     private BABY arr[]; 

     public Kindergarten(String name, int numOfbaby) { 
      this.name = name; 
      arr = new BABY[numOfbaby]; 

     } 

     public Kindergarten(String name, BABY[] arr) { 
      this.name = name; 

      for (int i = 0; i < currnt; i++) 
       this.arr[i] = arr[i]; 
     } 

     public void setname(String name) { 
      this.name = name; 
     } 

     public void setcurrnt(int currnt) { 
      this.currnt = currnt; 
     } 

     public void setarr(BABY[] arr) { 
      for (int i = 0; i < currnt; i++) 
       this.arr[i] = arr[i]; 
     } 


     public String getname() { 
      return name; 
     } 

     public int getcurrnt() { 
      return currnt; 
     } 

     public BABY[] getarr() { 
      return arr; 
     } 


     public String toString() { 
      return String.format("%s", name); 
     } 

     //add 
     public void add_b(BABY b) { 
      if (currnt == arr.length) 
       System.out.println("there is no speace for another baby"); 
      else 
       arr[currnt++] = new BABY(b); 

     } 

     public int srch_b(int id) { 
      int i; 
      for (i = 0; i < currnt; i++) 
       if (id == arr[i].getid()) 
        return i; 
      return -1; 
     } 

     public void del_b(int id) { 
      if (currnt == 0) 
       System.out.println("ther is no bebys to delet it "); 
      else { 
       int i; 
       for (i = 0; i < currnt; i++) 
        if (id == arr[i].getid()) 
         arr[i] = arr[currnt - 1]; 
       currnt--; 
      } 
     } 

     public void display_all() { 
      for (int i = 0; i <= currnt; i++) 
       System.out.println(arr[i].toString()); 
     } 

     public int num_b_inoculation() { 
      int num = 0; 
      for (int i = 0; i < currnt; i++) 
       if (arr[i].require_inoculation() == true) num++; 
      return num; 
     } 
    } 


    class BABY { 
     private String name; 
     private int id; 
     private int age; 

     public BABY(BABY b) { 
      name = b.getname(); 
      id = b.getid(); 
      age = b.getage(); 
     } 

     public BABY(String name, int id) { 
      this.name = name; 
      this.id = id; 
     } 

     public void setname(String name) { 
      this.name = name; 
     } 

     public void setid(int id) { 
      this.id = id; 
     } 

     public void setage(int age) { 
      this.age = age; 
     } 

     public String getname() { 
      return name; 
     } 

     public int getid() { 
      return id; 
     } 

     public int getage() { 
      return age; 
     } 

     public String toString() { 
      return String.format("%s-%d-%d", name + id + age); 
     } 

     public boolean require_inoculation() { 
      if (age < 3) 
       return true; 
      return false; 
     } 
    } 
+0

你在每个循环申报新的数组迭代 – mangusta

+0

你能扩大你的程序是如何表现? –

+0

格式代码正确的描述,它是不可读的。每一个IDE可以用一个关键笔划自动格式化整个文件,并尊重Java命名约定 –

回答

0

尝试做到这一点

class Kindergarten { 
    private String name; 
    private int currnt =0; 
    private BABY arr[];... 
+0

谢谢你的帮助,但他们回答我的问题 –