W tym artykule dowiemy się jak przesyłać do naszych programów argumenty.
Bardzo wiele programów korzysta z tej funkcjonalności – na podstawie rodzaju i liczby argumentów wykonują one różne operacje – przykładem jest kompilator języka Java javac bądź maszyna wirtualna java – pierwszy z nich jako argument przyjmuje nazwę pliku do skompilowania, a drugi – nazwę klasy do uruchomienia:
Podobnie działają komendy w linii poleceń w Windows i Linux. Często stosowana komenda cd (change directory) oczekuje argumentu – katalogu, do którego chcemy przejść:
Argumenty, które chcemy przesłać do programu, umieszczamy po jego nazwie. Możemy podać wiele argumentów rozdzielonych spacjami.
Po co w ogóle stosować argumenty programów? Dzięki nim możemy pisać programy, które po uruchomieniu nie wymagają dalszej interakcji z użytkownikiem – wszelkie potrzebne im do pracy informacje możemy dostarczyć z linii poleceń za pomocą argumentów.
Jeżeli dopiero zaczynasz przygodę z programowaniem w Javie, to możesz zastanawiać się, dlaczego metoda main w programach napisanych w języku Java ma jeden argument, którym jest tablica obiektów typu String?
To właśnie w tej tablicy przekazywane są argumenty, które użytkownik podał uruchamiając program. Jeżeli użytkownik nie poda argumentów, to tablica ta będzie pusta. Spójrzmy na przykład prostego programu, który wypisze na ekran wszystkie swoje argumenty wraz z numerem określającym kolejność każdego z nich:
public class WypiszArgumentyProgramu { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println( "Argument #" + (i + 1) + " = " + args[i] ); } } }
Jeżeli skompilujemy powyższy program, a następnie uruchomimy go za pomocą:
to nie zobaczymy nic na ekranie, ponieważ nie przekazaliśmy naszemu programowi żadnych argumentów. Aby przekazać argumenty do programu napisanego w języku Java, podajemy je po nazwie klasy do uruchomienia.
Uruchomimy nasz program drugi raz przekazując mu kilka argumentów:
Tym razem nasz program otrzymał w argumencie args metody main cztery wartości.
Argumentami mogą być także liczby, ale i tak będą one zapisane jako tekst w tablicy args. Jeżeli spodziewamy się jako np. drugiego argumentu pewnej liczby, to będziemy musieli przekonwertować tą wartość na liczbę, na przykład za pomocą metody Integer.parseInt. Przyjmuje ona jako argument ciąg znaków, który powinien reprezentować liczbę. Musimy jednak mieć na uwadze, że użytkownik może podać wartość inną niż liczba i próba zamiany tej wartości na liczbę zakończy się błędem.
Jeżeli chcielibyśmy, aby Cześć i czołem! było potraktowane jako jeden argument dla naszego programu, powinniśmy umieścić wszystkie te słowa w cudzysłowach, jak pokazano poniżej:
Możemy także uruchamiać nasze programy z argumentami poprzez IntelliJ IDEA, ustawiając je w oknie konfiguracji uruchomień:
W polu Program arguments możemy zdefiniować argumenty dla naszego programu. Klikamy przycisk OK i uruchamiamy nasz program, by zobaczyć:
Możesz wykonać następujące zadania, aby zaznajomić się z wykorzystaniem argumentów programów:
- Napisz program, który wypisze najdłuższy ze swoich argumentów (na podstawie liczby znaków, z których się składa.
- Napisz program, który przyjmuje jako argument ścieżkę do pliku na dysku z rozszerzeniem .txt i wypisuje zawartość tego pliku do okna linii poleceń. Jeżeli użytkownik:
- nie poda argumentu lub poda więcej niż jeden argument,
- poda ścieżkę do nieistniejącego pliku,
- poda ścieżkę do pliku o rozszerzeniu innym niż .txt,