2013-08-26 37 views
5

tôi đã nhầm lẫn với cách sử dụng args.length, tôi đã mã hóa một cái gì đó ở đây:args.length và dòng lệnh đối số

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]); 
    } 
} 

bản in là 0 bất kể giá trị tôi đặt trong đối số dòng lệnh, tôi nghĩ rằng tôi có thể nhầm lẫn args.length với args [0], ai đó có thể giải thích? Cảm ơn bạn.

+1

Bạn có thể đi qua lập luận sai. Bạn có thể chỉ cho chúng tôi cách bạn vượt qua các arg không? – Cruncher

Trả lời

19

int mảng được khởi tạo bằng không (tất cả các thành viên sẽ là zero) theo mặc định, xem 4.12.5. Initial Values of Variables:

Mỗi biến lớp, ví dụ biến, hoặc một thành phần mảng được khởi tạo với giá trị mặc định khi nó được tạo ra ...

Đối với loại int, giá trị mặc định bằng 0, nghĩa là, 0.

Bạn đang in giá trị của mảng, do đó bạn đang nhận được 0.

Bạn đã cố gắng thực hiện việc này chưa?

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

args chứa các dòng lệnh đối số được truyền cho chương trình.
args.length là độ dài của các đối số. Ví dụ, nếu bạn chạy:

java myJavaProgram first second 

args.length sẽ là 2 và nó sẽ chứa ["first", "second"].

+0

Xin chào Maroun, cảm ơn sự giúp đỡ của bạn! –

+0

vì vậy ý ​​nghĩa của args trong "args.length" là gì? nó chỉ là một tên ngẫu nhiên của một mảng hoặc đối số cho chiều dài? –

+0

Xem chỉnh sửa của tôi .... – Maroun

1

args[0] là phần tử đầu tiên của mảng args. args.length là chiều dài của mảng

2

Tôi nghĩ rằng bạn đang bỏ lỡ một mã số có thể chuyển đổi Strings để ints:

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

nếu * arg [n] * không phải là số? Bạn có thể thử bắt nó không? – Fernando

+0

@Fernando yes - nó sẽ ném một 'NumberFormatException' (một' RuntimeException') nếu chuỗi không chứa số nguyên phân tách – Bohemian

1

Các a mảng bạn lặp trên không phải là args có chứa các đối số thực tế. Bạn nên thử:

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

vì vậy ý ​​nghĩa của args trong "args.length" là gì? nó chỉ là một tên ngẫu nhiên của một mảng hoặc đối số cho chiều dài? –

+0

Đây là tên cho tham số phương thức chính. – Guillaume

0

các tranh luận bạn đang chuyển được lưu trữ trong mảng arg và không được gọi là mảng a. theo mặc định, một mảng được khai báo đúng nếu không được khởi tạo sẽ lấy giá trị mặc định của các kiểu dữ liệu của nó. trong trường hợp của bạn 0.

vì vậy bạn làm

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

hoặc khởi tạo mảng một với args.

0

args.chiều dài = 0;

nếu bạn đang tìm kiếm đầu ra này:

args [0]: zero
args [1]: một
args [2]: hai
args [3]: ba

đây là ví dụ ...

public static void main (string [] args) {

// mảng với tên mảng "arg" Chuỗi [] arg = {"số không", "một", "hai", "ba"};

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

bạn phải từ bỏ một thời gian để mảng ..

+2

Tôi không nghĩ rằng điều này trả lời câu hỏi nhưng tôi cũng không chắc chắn tôi hiểu những gì bạn đang đề xuất, bạn có thể làm rõ? Ngoài ra, định dạng tất cả các mã như mã. – blm

Các vấn đề liên quan