C# samoistnie zamykający się program konsolowy


(Kriston Pl) #1

Witam, próbowałem skompilować kod z książki, niestety sekundę po uruchomieniu program wyłącza się :/. Dotychczas używałem linijki

; i mogłem zobaczyć wynik w konsoli. Co muszę zmienić, żeby konsola nie zamykała się? Kod się kompiluje bez błędów.

using System;


public

    class main {


        static void Main(string[] args)

        {

            int a, b;

            if(args.Length < 2){

                Console.WriteLine("podaj dwa argumenty w wierszu poleceń");

                return;

            }

            try{

                a = Int32.Parse(args[0]);

                b = Int32.Parse(args[1]);

                }

            catch(Exception){

                Console.WriteLine("jeden z agumentów nie jest poprawną liczbą");

                return;

            }

            Console.WriteLine("wynikiem działania jest: {0}", a + b);

            Console.ReadLine();

        }    

    }

(Musialowski Tomasz) #2

Spróbuj dać Conslole.ReadLine() w każdym bolku, do którego wejście powoduje wyjście z programu czyli tutaj w pierwszym if i w catch. Ewentualnie możesz otworzyć konsolę cmd i odpalić na niej i zobaczyć, do którego bloku Ci wchodzi patrząc na komunikat.


(Kriston Pl) #3

A co w sumie robi ten program? Przykład jest żywcem wyjęty z książki "ćwiczenia c#" marcina lisa. Jak widać jest nie do końca poprawny, pozatym nie rozumiem co ma tutaj robić return;?


(somekind) #4

To samo, co zawsze - przerywa wykonanie funkcji. A ponieważ to Main, to program się kończy.

Dodaj Console.ReadLine przed każdym return, wtedy program się skończy dopiero gdy wciśniesz Enter.


(Kriston Pl) #5

W jaki sposób mogę poprawić ten program, według autora program miał pobierać dwa ciągi znaków np: 12 oraz 15, następnie dokonywać konwersji z tych dwóch ciągów na dwie zmienne int, a na końcu je dodać. No ale nie działa u mnie tak jak należy, a jest przepisany kropka w kropkę z książki... Ma tu znaczenie wersja visual studia c#? książka jest stara a ja mam najnowszy program.


(Musialowski Tomasz) #6

Gdybyś zrobił tak jak napisałem to byś wiedział w czym rzecz. Otóż program oczekuje, że podasz dwa argumenty w wierszu poleceń. Gdy odpalasz program przez F5 to żadne argumenty nie są przekazywane z linii poleceń i masz "podaj dwa argumenty w wierszu poleceń" i return, program Ci się zamyka. Musisz zrobić tak: [Windows]+R, wpisujesz cmd, tam ścieżkę do folderu z plikiem wykonywalnym exe i tam dajesz jego nazwę i po spacjach dwie liczby.

Jeśli chcesz, żeby nie trzeba było podawać argumentów z linii poleceń, musisz je wczytać w programie właśnie przez ReadLine() np.

Console.WriteLine("podaj a: ");

a = Int32.Parse(Console.ReadLine());

Console.WriteLine("podaj b: ");

b = Int32.Parse(Console.ReadLine());

Wywalasz sprawdzanie liczby argumentów.