Problem z wypisaniem stringa C#

0

Hej!
Potrzebuję pomocy, ponieważ po wpisaniu wszystkiego w konsoli nie przechodzi dalej do wypisania informacji.

class Liczenie
    {
        public String imie { get; set; }
        private int rokUrodzenia, wiek;


        public Liczenie(String imie, int Rok)
        {
            this.imie = imie;
            rokUrodzenia = Rok;
            wiek = DateTime.Now.Year - rokUrodzenia;
            
        }

        public String wypisz()
        {
            return $"Imię:"+ imie +"\nRok urodzenia:"+rokUrodzenia+"\nWiek: "+ wiek ;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Wpisz proszę swoje imię: ");
            String imie = Console.ReadLine();
            Console.WriteLine("Teraz wpisz swój rok urodzenia");
            int liczba = Convert.ToInt32(Console.ReadLine());

            Liczenie p1 = new Liczenie(imie, liczba);
            Console.ReadLine();
        }
    }


0

Nigdzie nie wywołujesz metody wypisz.

0
Botek napisał(a):

Nigdzie nie wywołujesz metody wypisz.

Wywołałem i nadal nie działa. Nie wyskakuje żaden błąd.

0

Console.WriteLine(p1.wypisz());

3

Możesz przeciążyć metodę Object.ToString w Twojej klasie:

public override string ToString()
{
    return $"Imię: {imie}{Environment.NewLine}Rok urodzenia: {rokUrodzenia}{Environment.NewLine}Wiek: {wiek}";
}

Poprawiłem Twoje wyrażenie, ponieważ stosowałeś znak dla interpolacji, a po pierwszym ciągu znaków wróciłeś do konkatenacji.

Brakuje także wypisania informacji na podstawie obiektu – mając metodę, która zwraca właściwości z klasy w postaci ciągu znaków, możesz po prostu wypisać te informacje jak każdy inny tego typu ciąg:

Console.Write(p1.ToString());

Zamiast tworzyć kolejną właściwość o nazwie wiek, możesz po prostu zrobić z niej getter który to obliczy:

public int Wiek
{
    get
    {
        return DateTime.Now.Year - rokUrodzenia;
    }
}

Możesz użyć także metody Console.ReadKey. Dzięki temu użytkownik może wcisnąć dowolny klawisz, kiedy program oczekuje na interakcję z nim.

Nie musisz deklarować typu string z wielkiej litery – Visual Studio najpewniej będzie Ci proponować zamianę na tzw. lowercase. To chyba przyzwyczajenie z Javy. :)

2
monki napisał(a):

Hej!
Potrzebuję pomocy, ponieważ po wpisaniu wszystkiego w konsoli nie przechodzi dalej do wypisania informacji.

    public String wypisz()
    {
        return $"Imię:"+ imie +"\nRok urodzenia:"+rokUrodzenia+"\nWiek: "+ wiek ;
    }
}

Po raz kolejny się kłania okłamywanie w identyfikatorach. Nazwałeś metodę 'wypisz' (pominę, ze w pierwszej wersji jej nie użyłeś). Oczekujesz od nie że wypisze, ale ona nie wypisuje, najwyżej formatuje dane.
Słowa są ważne

1 użytkowników online, w tym zalogowanych: 0, gości: 1