Cześć mam problem z zadaniem. Mam ciąg kodów oddzielonych ‘#’, chcę wybrać tylko te które zaczynają się od 01 i od 03 i wyświetlenie ich. Napisałam coś takiego ale nie wyświetla
PS. W tym kodzie może będziesz miał jeszcze jeden problem, zależnie od tego jakiego efektu oczekujesz, ale na razie zajmij się naprawieniem wyświetlania.
To nadal nie jest poprawne, co w ogóle chcesz uzyskać w tych linijkach:
this= KOD + tab2;
this= this;
Bo to jest w ogóle bezsensu - nielogiczne. Wcześniej miałaś
Console.WriteLine(KOD_PKD);
I było to dużo bliższe poprawnemu rozwiązaniu niż to co masz teraz. Wcześniej wyświetlałaś to co było przechowywane w zmiennej KOD_PKD - czyli null (nic) bo nigdzie nie ustawiałaś wartości tej zmiennej, wystarczyło tylko zmienić KOD_PKD na konkretny element tablicy w której masz zapisane interesujące Cię kody.
Ta pętla jest niepoprawna z tego względu że nie możesz mieć jednego indeksu dla tab1 i tab2 ponieważ mają one różne długości i zgaduję że w tab2 chcesz mieć wszystkie elementy po kolei a nie na tych samych indeksach co domyślnie. Gdybyś chciała przepisać z tab1 do tab2 interesujące Cię kody i by były na tych samych indeksach w tedy stwórz tablicę tab2 o długości tablicy tab1.
Ogólnie powinnaś tak zrobić z tego względu że może się okazać iż w tab1 będą same interesujące Cię kody i nie zapiszesz ich do mniejszej tablicy tab2.
Czemu przypisujesz do this wartość? This to wskaźnik na konkretny obiekt danej klasy, nie możesz czegoś takiego robić.
Tak samo nielogiczna jest linijka: string wynik0 = KOD_PKD + tab2; przypisujesz do wyniku null + tablica (nie element tylko tablica).
Ogólnie kod powinien wyglądać mniej więcej tak (mogą być błędy nie piszę na co dzień w C#)
string [] tab1 = [KODY(INPUT)].Split('#');
string [] tab2 = new string [tab1.Length];
int j = 0;
for(int i = 0; i < tab1.Length && j < tab2.Length; i++)
{
if(tab1[i].Substring(0,2) == "01"|| tab1[i].Substring(0,2) == "03")
{
tab2[j] = tab1[i];
j++;
}
}
for(int i = 0; i < j; i++)
{
Console.WriteLine(tab2[i]);
}