2013-08-26 15 views
5

mam mylić z jak korzystać args.length, mam zakodowane coś tutaj:args.length i wiersza poleceń argumenty

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    for(int i = 0;i<args.length;i++) { 
     System.out.print(a[i]); 
    } 
} 

Wydruk jest 0 bez względu na to, jakie wartości umieścić w argumenty wiersza poleceń, I Myślę, że prawdopodobnie pomyliłem args.length z args [0], czy ktoś mógłby wyjaśnić? Dziękuję Ci.

+1

może być przechodzącej argumenty źle. Czy możesz nam pokazać, w jaki sposób przekazujesz argumenty? – Cruncher

Odpowiedz

19

int tablica jest inicjowany na zero (wszyscy członkowie wynosi zero) domyślnie patrz 4.12.5. Initial Values of Variables:

Każda zmienna klasy przykład zmienne, lub element tablicy jest inicjowany na wartość domyślną, gdy jest tworzony ...

Dla typu int domyślną wartością jest zero, czyli 0.

Drukujesz wartość tablicy, więc dostajesz 0.

Czy próbowałeś to zrobić?

for(int i = 0;i<args.length;i++) { 
    System.out.print(args[i]); 
} 

args zawiera wiersza poleceń argumenty, które są przekazywane do programu.
args.length to długość argumentów. Na przykład, jeśli uruchomić:

java myJavaProgram first second 

args.length będzie 2 i będzie ona zawierać ["first", "second"].

+0

Cześć Maroun, dziękuję za pomoc! –

+0

więc co oznaczają argumenty w "args.length"? czy jest to po prostu losowa nazwa tablicy lub argumenty o długości? –

+0

Zobacz moją edycję ... – Maroun

1

args[0] to pierwszy element tablicy args. args.length jest długość tablicy

2

Myślę, że brakuje kodu, który konwertuje ciągi do wskazówki:

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    // Parse int[] from String[] 
    for (int i = 0; i < args.length; i++){ 
     a[i] = Interger.parseInt(args[i]); 
    } 

    for (int i = 0; i < args.length; i++){ 
     System.out.print(a[i]); 
    } 
} 
+0

co jeśli * arg [n] * nie jest liczbą? Czy możesz spróbować go złapać? – Fernando

+0

@Fernando yes - rzuci 'NumberFormatException' (' RuntimeException'), jeśli łańcuch nie zawiera możliwej do analizy liczby całkowitej – Bohemian

1

Tablica a iteracyjne nie jest args który zawiera aktualne argumenty. Powinieneś spróbować:

public static void main(String[] args) { 
     for(int i = 0;i<args.length;i++){ 
      System.out.print(args[i]); 
     } 
} 
+0

, więc co oznacza argument "args.length"? czy jest to po prostu losowa nazwa tablicy lub argumenty o długości? –

+0

Jest to nazwa dla głównego parametru metody. – Guillaume

0

argumenty, które przekazujesz, są przechowywane w tablicy args, a nie w tak zwanej tablicy a. domyślnie poprawnie zadeklarowana tablica, jeśli nie została zainicjowana, przyjmuje domyślne wartości swoich typów danych. w przypadku 0.

tak zrobić

public static void main(String[] args) { 
for(int i = 0;i<args.length;i++){ 
System.out.print(args[i]); 
} 
} 

lub zainicjować tablicy A z args.

0

args.długość wynosi = 0;

jeśli szukasz tego wyjścia:

args [0]: zero
args [1]: jeden
args [2]: dwa
args [3]: trzy

tutaj jest przykład ...

public static void main (String [] args) {

// tablica z nazwą tablicy "arg" String [] arg = {"zero", "jeden", "dwa", "trzy"};

 for(int i=0; i<arg.length ;++i) 
     { 
      System.out.println("args["+i+"]:"+arg[i]); 
     } 
    } 
    } 

trzeba dać długości do tablicy ..

+2

Nie sądzę, że to odpowiada na pytanie, ale nie jestem również pewien, czy rozumiem, co sugerujesz, czy możesz wyjaśnić? Ponadto sformatuj cały kod jako kod. – blm

Powiązane problemy