• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie wypisuje z tablicy

Object Storage Arubacloud
+1 głos
151 wizyt
pytanie zadane 16 kwietnia 2021 w C# przez Philo-Tech Nowicjusz (130 p.)
using System;

namespace ConsoleApp1
{
    class Osoba
    {
        internal string name;
        public string nazwisko;
        short wzrost; // czyli domyślnie "private"
        protected float waga; // jeżeli nie wystąpi dziedziczenie to zadziała jak "private"
        private bool kobieta;

        public void wypisz()
        {
            Console.WriteLine("Osoba {4}, {0} {1}, mierzy {2} cm wzrostu i waży {3}", name, nazwisko, wzrost, waga, kobieta ? "Kobieta" : "Mężczyzna");
        }

        
    }

    class Grupa
    {
        public const int MAX_LICZEBNOSC = 24;
        public static readonly int min_liczebnosc = 10;// zamiast 10 można wstawić wyreżenie ze zmienną, ponieważ to "readonly"   = liczba_grup>5? 15:10
        public string nazwma = "NONAME";
        public static int liczba_grup;
        public Osoba[] czlonkowie_grupy;

        public void dodaj_osobe(Osoba osoba, int pozycja)
        {
            czlonkowie_grupy[pozycja] = osoba;

        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Osoba osoba1;
            osoba1 = new Osoba();

            osoba1.name = "Tomek";
            osoba1.nazwisko = "atomek"; 
            //Console.Write("Nowa osoba ma na imię: {0} i nazwisko {1}", osoba1.name, osoba1.nazwisko);

            Osoba osoba2 = new Osoba { name = "Mirek", nazwisko = "Jakiś" };

            Grupa g1 = new Grupa();
            g1.czlonkowie_grupy = new Osoba[] { osoba1, osoba2 };

            Grupa g2 = new Grupa();
            g2.czlonkowie_grupy = new Osoba[2];

            g2.dodaj_osobe(osoba1, 0);
            Osoba osoba4 = new Osoba();
            osoba4.wypisz();
            osoba4 = g2.czlonkowie_grupy[0];

            Console.WriteLine("wypisanie wstawionej osoby {0} {1}", g2.czlonkowie_grupy, osoba4); // ?????????????????????????????????

            foreach (var ktos in g1.czlonkowie_grupy)
                //Console.WriteLine("{0} {1}", ktos.name, ktos.nazwisko);
                ktos.wypisz();
        }
    }
}

Nie wiem dlaczego nie chce mi wypisać:

Console.WriteLine("wypisanie wstawionej osoby {0} {1}", g2.czlonkowie_grupy, osoba4);

Ktoś coś? Mam pierwszy dzień z C#...

Z góry dziękuję i pozdrawiam Mirka i jego mafię też ;)

1
komentarz 16 kwietnia 2021 przez DarthMazut Bywalec (2,990 p.)

Jeśli używasz C# 6.0 lub nowszego proponuję korzystać z interpolacji stringów:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

unikniesz tego typu problemów.

komentarz 16 kwietnia 2021 przez Philo-Tech Nowicjusz (130 p.)
Dziękuję za odpowiedź.

Też próbowałem z "$" przed i też nie wypisywało...

Spróbuję jeszcze raz(doczytam z linku) i jak nie wypisze, to wrócę. Swoją drogą ciekawy ten C# (partial class, out, params...)

P.s.

Tak przy okazji; po co jest konstruktor statyczny? Ja widzę sens np. w zapisaniu daty pierwszego odpalenia danej klasy. Jest jakiś inny sens tego "tworu"?

2 odpowiedzi

0 głosów
odpowiedź 17 kwietnia 2021 przez tomasz12345 Użytkownik (750 p.)

Twoje problemy :

1. g2.czlonkowie_grupy - nie wypisuje się

2. osoba4 - nie wypisuje się

Rozwiązanie

1. W języku C# nie wypiszesz tablicy podając jej nazwę, tak się da bodajże w pythonie, mogłbys nadpisać metodę toString() lub po prostu napisać takie coś

string[] array = new string[5];
            
                array[0] = "jarek";
                array[1] = "ola";
                array[2] = "marcel";
                array[3] = "iwona";

            

            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine(array[i]);
            }

2. jeśli chodzi o drugi problem, to w klasie Osoba musisz nadpisać metodę toString() , przykładowo tak

public override string ToString()
        {
            return $"name: {name}, nazwisko : {nazwisko}";
        }

oczywiście nie wypisałem wszsytkich parametrów z klasy Osoba, ale mniej więcej tak to działa

 

dodatkowo: jeśli piszesz Console.Writeline() to w nawiasie pisz przykładowo ("These are my variables :  " + var1 + var2) albo stosuj interpolację jak napisał kolega wyżej , nie oddziela się zmiennych przecinkami w c#

statyczne pliki często są plikami konfiguracyjnymi, inicializują się raz w momencie odpalenia programu( np. załóżmy, że piszesz prostą apkę do dodawania osób na listę gości na imprezę, to w momencie utworzenia danego obiektu mozesz przypisać obecną datę a potem użyć jej np. w wyświetlaniu kiedy dana osoba została zapisana. Oczywiście ich zastosowanie jest napewno szersze, jednak jestem początkujący w tej technologii :)

pozdro !

0 głosów
odpowiedź 17 kwietnia 2021 przez Ghost Bywalec (2,930 p.)
foreach masz źle, daj klamry i będzie działać albo usuń za komentowaną linię

Podobne pytania

0 głosów
1 odpowiedź 1,327 wizyt
0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 29 czerwca 2022 w C# przez chrystian Gaduła (4,780 p.)

92,551 zapytań

141,397 odpowiedzi

319,528 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...