C# get ve sette istediğim sonucu alamıyorum

hayl0s

Hectopat
Katılım
17 Eylül 2021
Mesajlar
742
Çözümler
5
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Selam, kodları aşağıda veriyorum. Amacım yaşı 18'den büyükse direkt olarak konsola sonucu yazdırmak. Eğer yaş 18'den küçükse konsolda "yaşı: 18'den küçük olamaz" uyarısı vermek. Fakat şu şekilde bir çıktı alıyorum:



Amacım üstte yer alan metni "yaşı: 18'den küçük olamaz" şeklinde yazdırmak fakat bunu yapamadım.

C#:
using System;

namespace ConsoleApp2.
{
 internal class Ogrenci.
 {
 private string ad;
 private string soyad;
 private string alan;
 private int yas;

 public string ADI.
 {
 get { return ad; }
 set { ad = value; }
 }

 public string SOYADI.
 {
 get { return soyad; }
 set { soyad = value; }
 }

 public string ALANI.
 {
 get { return alan; }
 set { alan = value; }
 }
 public int YASI.
 {
 get { return yas; }
 set.
 {
 if (value < 18)
 {
 Console.WriteLine("Yaşınız 18'den küçük olamaz!");
 }
 else.
 {
 yas = value;
 }
 }
 }
 }
}
using ConsoleApp2;
using System.Reflection;
using System;

class Program.
{
 static void Main(string[] args)
 {
 Ogrenci ogr = new Ogrenci();
 ogr.ADI = "Metin";
 ogr.SOYADI = "Katral";
 ogr.ALANI = "Bilgisayar";
 ogr.YASI = 16;

 Console.WriteLine("Adı: " + ogr.ADI);
 Console.WriteLine("Soyadı: " + ogr.SOYADI);
 Console.WriteLine("Alanı: " + ogr.ALANI);
 Console.WriteLine("Yaşı: " + ogr.YASI);

 Console.Read();
 }
}
 

Dosya Ekleri

  • 1681743325253.png
    5 KB · Görüntüleme: 45
Yaşın 18 olma doğrulaması isim vs. yazdıktan sonra soruyorsunuz. Yani ilk isimler vs alıyor sonra yaş doğrulanıyor onun yerine şöyle yapabilirsiniz
Kod:
using System;

namespace ConsoleApp2
{
    internal class Ogrenci
    {
        private string ad;
        private string soyad;
        private string alan;
        private int yas;

        public string ADI
        {
            get { return ad; }
            set { ad = value; }
        }

        public string SOYADI
        {
            get { return soyad; }
            set { soyad = value; }
        }

        public string ALANI
        {
            get { return alan; }
            set { alan = value; }
        }

        public int YASI
        {
            get { return yas; }
            set
            {
                if (value < 18)
                {
                    Console.WriteLine("Yaşı 18'den küçük olamaz.");
                }
                else
                {
                    yas = value;
                }
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Ogrenci ogr = new Ogrenci();
            ogr.ADI = "Metin";
            ogr.SOYADI = "Katral";
            ogr.ALANI = "Bilgisayar";
            ogr.YASI = 16;

            if (ogr.YASI >= 18)
            {
                Console.WriteLine("Adı: " + ogr.ADI);
                Console.WriteLine("Soyadı: " + ogr.SOYADI);
                Console.WriteLine("Alanı: " + ogr.ALANI);
                Console.WriteLine("Yaşı: " + ogr.YASI);
            }

            Console.Read();
        }
    }
}
 

Hocam bu şekilde doğru fakat benim isteğim yaş: Den sonra 18'den küçükse uyarı yazdırmak. Aslında uyarı yazıyor doğru fakat yaşın yanına yazmıyor üste yazıyor bunu çözemedim ben.
 
Return eklememişsin şu şekilde ekleyebilirsin.
C#:
public int YASI.
{
    get { return yas; }
    set
    {
        if (value < 18)
        {
            Console.WriteLine("Yaşınız 18'den küçük olamaz!");
            return; //return ile çık
        }
        else
        {
            yas = value;
        }
    }
}
 
Yaşın setterında sadece console writeline yapılıyor, bi alt satıra yas = value yazın
 

Hocam sonuç aynı
 
Sorununuzu tam anlayamadım, siz elde etmek istediğiniz çıktının bir örneğini paylaşabilir misiniz?
 
Sorununuzu tam anlayamadım, siz elde etmek istediğiniz çıktının bir örneğini paylaşabilir misiniz?
Bu şekilde üstte değil altta uyarı vermesini istiyorum.
 

Dosya Ekleri

  • 1681743325253.png
    4,9 KB · Görüntüleme: 43
Bu şekilde üstte değil altta uyarı vermesini istiyorum.
O zaman sorumlulukları ayıralım.

Oradaki Ogrenci isimli sınıfın tek görevi verileri tutmak olsun, sen yaş olarak ister 18 ver ister 500 ver ister -5 ver o karışamasın.

Karışamayacağı için o 18den küçük olamazsınız diye uyarı logunu atmasın, onun görevi değil çünkü. Ogrenci sınıfı değer ne gelirse gelsin yas = value; diye set etsin, (if (value<18 ) kontrolü kalkacak yani oradan)

Şimdi Main içindeki asıl çalışacak programa dönelim. Yeni bir ogrenci oluşturuldu, adı, yaşı vb. set edildi. (Uyarı mesajı falan yok henüz).
Sisteme girmiş olduğun bilgileri yazdıracak şimdi, Adı: şu, Soyadı: Bu vb. diye.

Sisteme tanımlanan ogrencinin bilgileri yazdırıldıktan sonra şimdi kontrol zamanı. Elimizdeki ogrencinin verilerini validate edeceğiz. Bu örnekte bunu yine Main method içine ekleyebilirsin, ya da istiyorsan Ogrenci sınıfının içine bir yasKontroluYap(Ogrenci ogr) gibi bir method ekleyebilirsin, daha güzeli ise sadece verilerin geçerliliğini kontrol edecek bir validator sınıfı oluşturup onun içine kontrol methodları yazmak.

Neyse, ogrenci oluştu, adı soyadı vb. yazdırmıştık. En sonunda kontrol ediyoruz yaş 18den küçük mü diye, orada da uyarını yazdırırsın.
 

Teşekkür ederim
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…