While wyświetla zawartość mimo wartości false

0

Witam!
Uczę się C# i mam problemy z kalkulatorem :/
Zapewne popełniłem jakiś błahy błąd, ale oczywiście w swoim najtrudniej go znaleźć. Pomimo podania poprawnych wartości tekst pod while (jest przy nim komentarz) jest wyświetlany.

if (WybórFunkcjonalności.Key == ConsoleKey.A)
            {
                //Obliczanie sumy
                int n, i = 0, Składnik, Suma = 0; //n - ilość składników sumy; i - zmienna pomocnicza
                Console.WriteLine("\n\n\t========= Program obliczy sumę ========\n\tPodaj ilość składników do zsumowania.");
                Console.Write("\tMusi być ona większa od zera: ");
                do //menu sumy, oraz warunek niezbędny do rozpoczęcia obliczeń
                {

                    while (!int.TryParse(Console.ReadLine(), out n));
                    {
                        Console.WriteLine("\n\tERROR: W zapisie wystąpił nieprawidłowy znak."); //Ten tekst wyświetla się pomimo podania np. liczby 5
                        Console.Write("\n\tPodaj ilość składników do zsumowania ponownie: ");
                    }
                } while (n <= 0);

                for(i=0; i<n; i++)
                {
                    Console.Write("\tPodaj składnik: ");
                    while (!int.TryParse(Console.ReadLine(), out Składnik)) ;
                    {
                        Console.WriteLine("\n\tERROR: W zapisie wystąpił nieprawidłowy znak.");
                        Console.Write("\n\tPodaj składnik ponownie: ");
                    }
                    Suma += Składnik;
                }
                Console.WriteLine("\tSuma podanych składników jest równa {0}", Suma);

            }

Z góry dziękuję za pomoc!

1

Usuń średniki po while
Twój kod

while (!int.TryParse(Console.ReadLine(), out n))**;**
 {
    //
}

Poprawny kod

while (!int.TryParse(Console.ReadLine(), out n))
 {
    //
}

Aktualnie on zatrzymuje się w while ale tą linię kończysz średnikiem więc uznaje że ten blok kodu objęty nawiasami {} nie należy do tego while dlatego jak wpiszesz zły znak to nic nie wyświetla i kontynuuje pętle, a jak wpiszesz cyfrę to kończy działanie while i przechodzi do tego bloku kodu {}

W ogóle jak piszesz w Visual Studio to ono podpowiada takie rzeczy, podkreśla ten średnik na zielono, a dodatkowe info co mu nie pasuje możesz przeczytać w Warningach

0

Dzięki wielkie. Faktycznie było podkreślone na zielono. Muszę wyczuć kiedy trzeba odpuszczać średnik :)

A czemu nie używać polskich znaków skoro jest Unicode? U mnie na uczelni wykładowcy ich używają

Szanowny Panie Adminie.
Przepraszam, moja pomyłka - wyedytowałem zły post.

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