Uruchamianie programu z wiersza poleceń z parametrami

2013-12-11 22:53

Rejestracja: 6 lat temu

Ostatnio: 6 lat temu

0

Witam
Jestem początkujący. Mam do sklepania program:

Napisz program który pobierze parametry z linii poleceń, taki że:
każdy parametr musi mieć swoją nazwę po której będzie wstawiana wartość;
program ma działać w zależności od wartości i ilości parametrów;
program ma sprawdzać czy podano wystarczającą liczbę parametrów;
program nie musi sprawdzać czy nazwy parametrów są prawidłowe - na tym etapie opieramy się tylko na ich ilości;

Póki co mam tyle:

public class Main{ 

public static void main(String[] args) { 
System.out.println( "Argumenty przekazane przez linie polecen:" ); 

int dzien = Integer.valueOf(args[0]); 
int miesiac = Integer.valueOf(args[1]); 
int rok = Integer.valueOf(args[2]); 

System.out.println("Dzien"+dzien); 
System.out.println("Miesiac"+miesiac); 
System.out.println("Rok"+rok); 
} 
}

Wszystko fajnie pięknie, ale wywołuję program z linii komend poleceniem:
java Main liczba 10 12 1988
a nauczyciel chce aby było z nazwami parametrów:
java Main -dzien 10 -miesiac 12 -rok 1988

Myślałem, że wystarczy poszczególne argumenty przypisać do zmiennych (stąd int dzień, miesiąc i rok) ale nie działa....
Co zrobić? Czy w ogóle da radę nazwać po swojemu te parametry?

Pozdrawiam :)

edytowany 1x, ostatnio: bogdans, 2013-12-12 01:16

Pozostało 580 znaków

2013-12-11 23:04

Rejestracja: 14 lat temu

Ostatnio: 2 dni temu

1
int state=-1,dzien=-1,miesiac=-1,rok=-1
for(i=0;i<args.length;++i)
   {
    if(state==2) { rok=Integer.valueOf(args[i]); state=-1; }
    else if(state==1) { miesiac=Integer.valueOf(args[i]); state=-1; }
    else if(state==0) { dzien=Integer.valueOf(args[i]); state=-1; }
    else if(args[i].equals("-rok") state=2;
    else if(args[i].equals("-miesiac") state=1;
    else if(args[i].equals("-dzien") state=0;
    else { System.out.println("Nieznany parametr"); return; }
   }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Nie sprawdzasz czy podano wystarczającą liczbę parametrów. Banalne sprawdzenie 'if(args.length>=6)nie wystarcza, bo można program uruchomić tak:java Main -rok 2003 -rok 1987 -rok 2005` - bogdans 2013-12-12 01:19
Te sprawdzenia mogą odbyć się po pętli - _13th_Dragon 2013-12-12 01:30
Jak? Będziesz sprawdzał wartość zmiennych dzien, miesiac i rok? A co w takim przypadku:java Main -dzien 15 -miesiac 12 -rok -1? - bogdans 2013-12-12 01:40
Uważasz że konieczne są trzy flagi informujące o pobraniu każdej z wartości to tak napisz - wprost ;) - _13th_Dragon 2013-12-12 01:46
Ale to oznacza, że sprawdzania muszą się odbyć w pętli. - bogdans 2013-12-12 01:55

Pozostało 580 znaków

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