Wątek przeniesiony 2014-05-01 22:46 z C# i .NET przez somekind.

do ... while nie sprawdza warunku

0

Witam .

Mam problem z zagnieżdżona pętlą do .. whlile a mianowicie zachowuje się ona tak jak by nie sprawdzała warunku, nie mam pojęcia czym to jest spowodowane.
Za każdym razem pętla jest wykonywana bez względu co jest wczytane do zmiennej prod.

 public static void Main()
    {
        Sklep komputronic = new Sklep();
        komputronic.UzupelnijMagazyn();
        int wybor;
        do
        {
            Console.Clear();
            Console.WriteLine("Witaj w moim sklepie\n");

            Console.WriteLine("[1] Wyświetl produkty");
            Console.WriteLine("[2] Zakończ");
            Console.Write("\n Wybor: ");
            wybor = Convert.ToInt32(Console.ReadLine());

            if (wybor == 1)
            {
                int prod;

                do
                {
                    komputronic.WyswietlMagazyn();
                    Console.Write("Wybierz produkt który chcesz kupić: ");
                    prod = Convert.ToInt32(Console.ReadLine());
                  
                    switch(prod)
                    {
                        case 0:
                            komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[0]);
                            break;
                        case 1:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[1]);
                            break;
                        case 2:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[2]);
                            break;
                        case 3:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[3]);
                            break;
                        case 4:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[4]);
                            break;
                        default:
                            Console.WriteLine("Nie ma takiego produktu");
                            break;
                    }
                    // tutaj pojawia się problem
                } while (prod != 0 || prod != 1 || prod !=2 || prod !=3 || prod !=4);    
  
                Console.Clear();
                komputronic.kowalski.WyswietlZamowienie();

                break;
                
            }
            else if (wybor == 2)
                return;
            else
                Console.WriteLine("Zły wybór!");
                Thread.Sleep(500);
        } while (wybor != 1 || wybor != 2);
    }
 

Jak na razie wrzucam tyko Main`a

1

prod != 0 || prod != 1 || prod !=2 || prod !=3 || prod !=4 przetłumacz ten warunek na polski i odpowiedz sobie dla jakiej wartości prod będzie false.


                    switch(prod)
                    {
                        case 0:
                            komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[0]);
                            break;
                        case 1:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[1]);
                            break;
                        case 2:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[2]);
                            break;
                        case 3:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[3]);
                            break;
                        case 4:
                             komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[4]);
                            break;
                        default:
                            Console.WriteLine("Nie ma takiego produktu");
                            break;
                    }

Możesz zmienić na...

if ( 0 <= prod && prod <= 4 )
   komputronic.kowalski.DodajProduktDoZamowienia(komputronic.magazyn[prod]);
else
   Console.WriteLine("Buont").
0

Poza tym możesz zmienić:

if ( wybor == 1) 
{
   // 30 linii kodu
}

Na

if ( wybor == 1)
   WyswietlProdukty();

A w nowej metodzie będziesz miał te 30 linii kodu...

0

Faktycznie masz rację mój warunek nie ma sensu :P A z rad na pewno skorzystam Dzięki

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