En iyi yanıtlayıcılar
Sınıf sorusu

Soru
-
Arkadaşlar hesaplamak istediğim şeyi ekrana yazmıyor.Bi bakabilirmisiniz
main kısmı
class Program
{
static void Main(string[] args)
{
dikdortgen dd = new dikdortgen();
dd.Yazdir();
Console.ReadKey();
}
}
sınfımın ksımı
public class dikdortgen
{
public double en=5;
public double boy=6;
public double Alan;
public double Cevre;
public void AlanHesabı()
{
this.Alan = this.en * this.boy;
}
public void Yazdir()
{
Console.Write("alan hesabı: "+this.Alan);
}
}
ekrana alanı yazdırmıyor.Acaba neden
Yanıtlar
-
Ben şöyle düşünüyorum.Şimdi alanhesabı fonksiyonu ile ben alan değişkeninin değerini değiştirmiş olmadım mı?Başlangıçta tamam 0 ancak alanhesabı metodu ile bu alan değişkenin değeri değişmez mi?
bir sınıfın içine fonksiyon tanımladın diye o fonksiyon kendi kendine çalışacak değil elbet, o fonksiyonu bir yerlerde çağırıp işlettirmen gerekir. sende bu fonksiyonu main içinde hiçbir yerde çağırırıp kullanmadığın için elbetteki çalışmıyor.Yani nasıl dd.Yazdir satirini kullanarak fonksiyonunu çağırmışsın işini yapmış, dd.AlanHesabı fonksiyonunuda bu çağırdığın çağrıdan önce çağırırsan oda işini yapar
- Yanıt Olarak İşaretleyen pcci 27 Ekim 2011 Perşembe 18:28
Tüm Yanıtlar
-
Yazdirmiyor derken herhalde 0 yaziyor demek istedin. Alan'a herhangi bir deger atanmiyor. Degeri 0. AlanHesabi() cagirilmadan dogrudan this.Alan yazdiriyorsun. Soyle birsey daha uygun:
public double Alan { get {return this.en * this.boy;} } public double Cevre; public double AlanHesabı() { return this.Alan; }
-
Sizin yapmak istediğiniz ile benimkisi farklı.Ekrana yazdır komutu ile ekrana yazdırıcam.Yani alan hesabı metodu void olacak.Onun için alanhesabını yaptıracağım.siz alan değişkenini tanımlarken direk alanı hesaplatmışsınız.Benim yaptığım da hangi hata var ki ekrana sıfır yazıyorda gerçek alan heasbını yazmıyor.
-
Hesap yaptirmiyorsun ki. Dogrudan Alan'i soruyorsun. Alan o sirada ilk degeri olan 0.
Yapmak istedigin farkli degil ama sana oyleymis gibi geliyor:) Orada direkt alani hesaplatma yok aslinda. O bir get metodu. Ne zaman alan sorsan o hesap yapilacak, yani en boy degistirirsen yeni alani alacaksin. Mantiken ayrica bir AlanHesabi() metodu gereksiz.
-
-
-
-
3.kez ayni seyi tekrarlayacagim. Sen ne istediysen onu yapiyor.
Alan zaten 0.
( dikdortgen dd = new dikdortgen(); ) satirinda yeni bir nesne olustugu sirada atanan deger. dd.Yazdir() yerine:
Console.WriteLine( dd.Alan ) ile de kontrol edebilirsin.
Onun baska bir deger almasini nerede sagladin ki farkli birsey bekliyorsun? Alan'in degerini sadece AlanHesabi() metodunda degistiriyorsun ve o metod hic cagirilmiyor. Metodlar durup dururken otomatikman cagirilmaz. Yoksa dd.Yazdir() olmadan da onun cagirilmasi gerekirdi.
-
-
Ben şöyle düşünüyorum.Şimdi alanhesabı fonksiyonu ile ben alan değişkeninin değerini değiştirmiş olmadım mı?Başlangıçta tamam 0 ancak alanhesabı metodu ile bu alan değişkenin değeri değişmez mi?
bir sınıfın içine fonksiyon tanımladın diye o fonksiyon kendi kendine çalışacak değil elbet, o fonksiyonu bir yerlerde çağırıp işlettirmen gerekir. sende bu fonksiyonu main içinde hiçbir yerde çağırırıp kullanmadığın için elbetteki çalışmıyor.Yani nasıl dd.Yazdir satirini kullanarak fonksiyonunu çağırmışsın işini yapmış, dd.AlanHesabı fonksiyonunuda bu çağırdığın çağrıdan önce çağırırsan oda işini yapar
- Yanıt Olarak İşaretleyen pcci 27 Ekim 2011 Perşembe 18:28
-