2016-03-29 24 views
1

Gününüzü bulmak için bir yöntemim var ama 3 değeri gün, ay, yıl olarak nasıl iade edeceğimi bilmiyorum. Lütfen bana yardımcı olun. Herhangi bir yardım takdir edilir. Şimdiden teşekkürler.Bu örnekte java'da birçok değer nasıl iade edilir?

public int dayInMonth(int day,int month,int year){ 
    //.... 
    return day; 
} 

public int theDayAfter(int day, int month, int year) { 
    day++; 
    int max=dayInMonth(day,month,year); 
    if(day>max) 
    { 
     month++; 
     if(month>12) 
     { 
      year++; 
      month=1; 
      day=1; 
     } 
    } 
    return ; 
} 
+4

Bir 'int [] ', bir' String' geri dönebilirler ** ya da ** bir 'Tarih'. Bununla ne yapmak istersin? Çünkü takvimi yeniden uygulamaya çalıştığınız görülüyor. –

+2

Geri dönüş türü yalnızca 'int' olduğundan, bu yöntemden * üç * 'int 'değer döndüremezsiniz. Ya * bir * 'int' döndürün ya da dönüş türünü değiştirin. Belki de üç 'int's içeren özel bir sınıf için? (Bu durumda iyi bir yöntem parametresi de yapardı.) – David

+0

bunu bir "String" olarak mı döndürüyor? ya da her indeksin – 3kings

cevap

1

Geçerli bir şüphe ve bir yıl önce bu kadar benzer bir şüphe ile karşı karşıya kaldım.

Bu değerleri bir yöntemden döndürmenin en iyi yolunun bir Nesne türüne döndürdüğünü öğrendim. Ben gün, ay ve yılı dönmek olsaydı şöyle Bu örnekte, sonra bir sınıf oluşturmak olacaktır:

public class DateOfYear{ 
    public int day; 
    public String month; 
    public int year; 

    public DateOfYear(int day, String month, int year){ 
     this.day = day; 
     this.month = month; 
     this.year = year; 
    } 
} 

Şimdi bu sınıf DateofYear örneğini kullanmak ve bir nesne gibi değerleri gönderir.

public DateOfYear dayInMonth(int day,int month,int year){ 
    //.... 
    return new DateOfYear(day,month,year); 
} 

ve aşağıdaki gibi arama fonksiyonu sadece geçerli günü görüntüleyebilir:: Ayın Günü almak istiyorum Yani, eğer gibi olacaktır işlevi izler

System.out.println("Day: "+dayInMonth(day,month,year).day); 

Benzer için 0TayAfter yönteminde, dönüş türünü değiştirin ve DateOfYear türünde nesneyi döndürün.

public DateOfYear theDayAfter(int day, int month, int year) { 
    day++; 
    int max=dayInMonth(day,month,year); 
    if(day>max) 
    { 
     month++; 
     if(month>12) 
     { 
      year++; 
      month=1; 
      day=1; 
     } 
    } 
    return new DateOfYear(day, month, year); 
} 

theDayAfter() aşağıdaki gibi ertesi gün görüntüleyebilir çağrı yöntemi:

System.out.println("Next Day: "+theDayAfter(day,month,year).day); 
System.out.println("Month: "+theDayAfter(day,month,year).month); 
System.out.println("Year: "+theDayAfter(day,month,year).year); 
+0

Çok teşekkürler. C/C++ cinsinden yapı tipi gibi görünüyor, değil mi? – Max

+0

Kesinlikle! Bu iki dilde bile, anlık yapıları göndererek çok sayıda değer gönderebiliriz. Çok kullanışlı bir know-how: bir fonksiyondan birden fazla değer göndermek. Cevabımı cevap olarak işaretlediğiniz için teşekkürler :) – srajappa

İlgili konular