2016-04-13 30 views
0

Tamam ben bir dizide hasta bilgisini depolar ve daha sonra, bir hastanın kimliğini girmek için kullanıcıya sorar bir program yaptım, o belirli hastanın kayıt olacak ekranda görüntülenir. Şimdi, kullanıcının kimliğini girdiği, ancak hangi ifadeyi kullanacağımı ve nasıl kullanacağımı bilmediğim hastanın kaydını güncellemeliyim. Ekle ve kaldırabileceğime inanıyorum ama emin değilim .. İşte Programım: - hemen sonra (yukarı == 1) nerede yapılacağını düşünürken sorun yaşıyorum.java arraylist belirli bir kayıt güncelleme sorunları olan

package samplee.java; 

import java.util.*; 

public class patient$ { 

    public static void main(String[] args) { 
     ArrayList<patientss> patient1 = new ArrayList<patientss>(); 
     Scanner src = new Scanner(System.in); 
     Scanner sc = new Scanner(System.in); 
     Scanner stc = new Scanner(System.in); 
     Scanner sdc = new Scanner(System.in); 
     Scanner update = new Scanner(System.in); 
     int id, it, num, i; 
     String name; 
     int ages; 
     int id1; 
     Boolean leave = false; 
     while (!leave) { 
      patientss xx = new patientss(); 
      System.out.println("Enter the patient's ID "); 
      System.out.println("-1 to finish entering"); 
      id = src.nextInt(); 
      if (id != -1) { 
       xx.setId(id); 
      } 
      System.out.println("Enter the patient's name "); 
      System.out.println("-1 to finish entering"); 
      name = stc.next(); 
      if (id != -1) { 
       xx.setName(name); 
       patient1.add(xx); 
      } 
      System.out.println("Enter the patient's phone number"); 
      System.out.println("-1 to finish entering"); 
      num = sdc.nextInt(); 
      if (id != -1) { 
       xx.setNum(num); 
       patient1.add(xx); 
      } else { 
       leave = true; 
      }//Escape the while loop. 
     } 
     System.out.println("Enter the id of a student"); 
     it = sc.nextInt(); 
     patientss tt = new patientss(); 
     for (i = 0; i < patient1.size(); i++) { 
      tt = patient1.get(i); 
      if (it == tt.getId()) 
       System.out.println(tt.toString()); 
      break; 
     } 
     System.out.println("Enter the id of the student you want to update"); 
     Scanner id11 = new Scanner(System.in); 
     id1 = id11.nextInt(); 
     int up, id2; 
     patientss dd = new patientss(); 
     for (i = 0; i < patient1.size(); i++) { 
      dd = patient1.get(i); 
      if (id1 == dd.getId()) { 
       System.out.println("If you want to change the name, type 1"); 
       System.out.println("If you want to change the number, type 2"); 
       System.out.println("If you want to change the id, type 3"); 
       up = update.nextInt(); 
       if (up == 1) { 

       } 
      } 
     } 
    } 
} 

Ve evet bu benim patientss sınıftır: -

package samplee.java; 

public class patientss { 
    int id; 
    String name; 
    int num; 

    public int getNum() { 
     return num; 
    } 

    public void setNum(int num) { 
     this.num = num; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public int getId() { 
     return id; 
    } 

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

    public String toString() { 
     return name + " " + id + " " + num; 
    } 
} 
+2

Sistem.in için beş 'Tarayıcı 'örneğine ihtiyacınız yok. Sadece birini kullan. – Tom

+1

Girintiniz ciddi şekilde berbat. Lütfen bunu düzeltin, kodunuz okunamaz (örneğin ilk '' if''ye bir bakın). Ayrıca: Neden aynı giriş akışında 5 tarayıcınız var? – f1sh

+0

Hastayı zaten 'dd' değişkenine ayıklamışsınız. Bu yüzden değerlerini değiştirmek için ayarlayıcı yöntemlerini çağırmak için kullanın. – Tom

cevap

3

bir ArrayList<Patientss> yerine HashMap<Integer, Patientss> kullanmayı deneyin. Bu sayede kimliğine sahip bir hastayı kolayca arayabilirsiniz.

HashMap, nesneleri almak ve güncellemek için kullanabileceğiniz bir uygulama alıp uygulamaya koydu.

0

Eğer ArrayList'i kullanmak istiyorsanız, tamam, ama @yogidilip'in yazdığı gibi, Nesne'ye göre nesneleri aramanız gerekiyorsa, HashMap'i kullanmanın en iyi yolu ... ama sorunuzun cevabı aşağıdaki gibidir:

sen değişken patientToUpdate nesne var, Sonra

//Object to update 
patientss patientToUpdate; 

for(patientss patient : patient1){ //ObjectType currentObject : ListName 
    if(patient.getId() = inputId){ 
     //Object found 
     patientToUpdate = patient; 
     //End for when found 
     break; 
    } 
} 

örneğin

için, listenizde kimliği aramak için döngü yöntemi olması gerekir ve nitelikler yeni değerler ayarlayabilirsiniz.

Size yardımcı olur umarım.