« poprzedni punkt  następny punkt »

3. Argumenty wiersza poleceń

Obowiązkowym parametrem metody public static void main(...) jest referencja do tablicy łańcuchów znakowych - String[].
Po uruchomieniu programu, tablica ta zawiera słowa podane w wierszu poleceń jako argumenty wywołania programu.

Co znaczy: "argumenty wywołania"?
Weźmy dowolną aplikację, np. przeglądarkę Netscape. Plik wykonywalny aplikacji nazywać się może np. netscp6.exe.
W sesji znakowej - inaczej terminalu  (w Windows - "okienko DOS") możemy uruchomić przeglądarkę za pomocą polecenia netscp6.
Dodatkowo możemy podać adres strony internetowej, która ma być w przeglądarce otwarta np.:

    netscp6 google.com

Ten dodatkowy napis - to właśnie argument wywołania programu.

Uwaga. Korzystając ze środowisk uruchomieniowych należy sprawdzić jak w konkretnym środowisku podaje się argumenty wiersza poleceń. Zwykle będzie to opcja w którymś z menus o nazwie  "command line arguments"

Teraz - jeśli mamy program napisany w Javie:

public class Program {
 //....
  public static void main(String[] args) {
   // ...
  }
}


W wielu systemach operacyjnych argumentami są kolejne słowa podane po wywołaniu aplikacji. Jeśli chcemy przekazać napis składający się z kilku słów - to należy ująć go w cudzysłów
to - po kompilacji - w wywołania programu możemy podać w wierszu poleceń argumenty:

    java Program arg1 arg2 ...  

i podane w wierszu poleceń argumenty - będą dostępne w metodzie main jako elementy tablicy args, przy czym pierwszy argument będzie pierwszym elementem tablicy (elementem o indeksie 0), drugi - drugim itd.


Proszę przetestować następujące przykłady z różnymi argumentami (oraz brakiem argumentów) podawanymi w wierszu poleceń.

Przykład 1. Wypisać argumenty wywołania programu

public class Test {

  public static void main(String[] args) {
    System.out.println("Liczba argumentów wywołania: " + args.length);
    for (int i = 0; i < args.length; i++)
      System.out.println(args[i]);
  }
}

Przykład 2. Zabezpieczyć się przed niewłaściwym wywołaniem, gdy wiadomo, że mają być dwa argumenty:

public class Test {

 public static void main(String[] args) {
   if (args.length != 2) syntax();
   System.out.println(args[0] + " " + args[1]);
 }

 static void syntax() {
   System.out.println("Syntax: ... ");
   System.exit(1);
 }

}

Uwaga: innym sposobem reagowania na niedostatek argumentów może być obsługa wyjątku ArrayIndexOutOfBoundsException.
(o obsłudze wyjątków będziemy mówić w ostatnim wykładzie).


« poprzedni punkt  następny punkt »