2016-03-30 22 views
-1

Bir kişinin adını ayarlamak için kullanılan addPerson (ana bilgisayarda) bu yönteme sahibim. Burada Nesnelerin uygun kullanımı

private static Person[] addPerson(Person _person[], int _minAge, int _id){ 
    int personAge; 
    String personName; 
    Scanner scan = new Scanner(System.in); 
    System.out.println("What's his age?"); 
     personAge = scan.nextInt(); 
     if(personAge >= _minAge){ 
      if(!_person[_id].getPerson().equals("")){ 
       System.out.println("Person " + _person[_id].getPerson() + " already exists."); 
      }else{ 
       System.out.println("Enter the name of the person"); 
       Scanner addPerson = new Scanner(System.in); 
       personName = addPerson.next(); 
       _person[_id].setPerson(personName); 
      } 
     }else{ 
      System.out.println("Person is not old enough"); 
     } 
    return _person; 
} 

Ve

kişinin adını ayarlamak için kullanılır benim özel sınıfında yöntem setPerson olduğunu.

public void setPerson(String name){ 
    System.out.println("Person added"); 
    personName = name; 
} 

ben o kişi zaten benim setPerson yöntemi içinde var olup olmadığını üzerine denetimini yapıyor olması gerektiğini biliyorum ama ben tür karıştı bu birlikteyim. Gördüğünüz gibi, kullanıcının bir tamsayı girmesini bekliyorum, bu yüzden bir dizeyi girmesi durumunda bir hata alamamaya dikkat etmeliyim.

Sorularım, aynı yöntem içinde ve özel sınıfımdaki yöntemde hangisinin kontrol edilmesi gerektiğidir?

+1

'addPerson' yönteminiz çok tuhaftır. Neden bir dizi? Neden parametre olarak minimum yaş? Neden "setPerson" 'a ihtiyacınız olmaması için bir parametre olarak isme sahip değilsiniz? – Gendarme

+0

@Gendarme Dizinin nedeni, _person nesnesi _ _ _ _ [_id [_id] [_id] nesnesinin _idine ve en az yaşa başvurmam gerektiğidir, çünkü kullanıcı girdilerinin yaşı en az birinin olup olmadığını kontrol etmem gerekiyor. SetPerson'a gelince onu kullanmam gerekiyor, bu yüzden nasıl doğru bir şekilde yapılacağını anlamaya çalışıyorum. –

+0

Denetimin addPerson içinde olması gerektiğini düşünüyorum. Ve bu yöntem setPerson'ınızı, Person sınıfında setName olarak yeniden adlandırmanız gerekir. – RubioRic

cevap

2

Kodunuz (ve sorunuz) biraz kafa karıştırıcıdır, ancak anlayabildiğimden, bir kişinin dizideki setPerson() numaralı telefondan olup olmadığını kontrol edip etmeyeceğinizi öğrenmek ister misiniz? O Person sınıfta bir yöntem olduğu için

Ben senin kodundan toplayabilir kadarıyla, sen , setPerson() bunu yapamaz gerekir. Person sınıfının, Person nesnelerinizle ilgili bir şey bilmesi gerekmemelidir.

Şimdi yaptığınız gibi, muhtemelen en iyi bahistir. kodu hakkında

 

bazı genel ipuçları:

yeni Scanner yaratmaya gerek yoktur, sadece sahip olduğunuz birini kullanabilirsiniz. Yani bu

Scanner addPerson = new Scanner(System.in); 
personName = addPerson.next(); 

o ismi verdiği o mantıklı değil, bu

personName = scan.next(); 

 

Ben de size yöntem adını setPerson() yerine adını setName() kullanmak öneririm olur Gerçekte yaptığınız şey başka bir şeydir.

+0

Bozuk ... Kodu kopyalamaya çalıştım. Şimdi düzeltildi. Aslında id olarak _id –

0

Bu şekilde yapardım. Ancak şu anda java yok, bu yüzden snippet'i test etmedim.