2012-10-08 33 views
5

iv'đã cố gắng tìm hiểu lập trình java cơ bản trong 2 ngày qua và tôi gặp phải sự cố tôi không thể kích hoạt khi xem mã sau:Người mới bắt đầu cơ bản trong Java: 'đối số' có nghĩa là gì trong Java

class DayCounter { 
    public static void main(String[] arguments) { 

     int yearIn = 2008; 
     int monthIn = 1; 
     if (arguments.length > 0) 
      monthIn = Integer.parseInt(arguments[0]); 
     if (arguments.length > 1) 
      yearIn = Integer.parseInt(arguments[1]); 
     System.out.println(monthIn + "/" + yearIn + " has " 
      + countDays(monthIn, yearIn) + " days."); 
    } 
} 

Tôi không thể hiểu dòng if (arguments.length > 0) nghĩa là gì arguments có nghĩa là gì? Giá trị đến từ đâu?

+0

"public static void main (String [] arguments)" (ngay dưới Class DayCounter) – User404

+1

[Xem tại đây] (http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html) . nó sẽ cung cấp cho bạn sự an ủi tốt hơn – gks

Trả lời

1

Đối số là danh sách các Tham số có thể được chuyển đến Chương trình Java của bạn khi khởi động.

nếu (arguments.length> 0) kiểm tra xem có đối số nào đã được cung cấp hay không.

Nếu không, bạn sẽ cố gắng truy cập vào một mảng trống và nhận và lập chỉ mục ngoài giới hạn ngoại lệ.

Ngoài ra còn có rất nhiều hướng dẫn ở đó, có thể giúp bạn.

Hãy xem Oracle's essentials guide, here about CMD Line Arguments.

2

Chúng đến từ dấu nhắc lệnh. Khi bạn bắt đầu chạy một chương trình, bạn có thể nói:

java program arg1 arg2 ...argN 

Tên arg ngay lập tức sau tên chương trình.

4

arguments là các tùy chọn dòng lệnh được cung cấp cho chương trình java của bạn khi chương trình chạy. Chúng được lưu trữ trong một mảng để gọi arguments.length cung cấp số lượng đầu vào dòng lệnh cho chương trình của bạn.

Họ được thông qua tại như thế này trên thực

java program argument1, argument2, argument3 

Trong trường hợp này arguments.length sẽ quay trở lại 3 vì có 3 đối số dòng lệnh.

1

đối số được truyền vào phương pháp chính

public static void main(String[] arguments) 

trong trường hợp này nó có nghĩa là một mảng các giá trị có thể được truyền cho phương pháp này. Thông thường, đây là các đối số mà bạn chuyển đến một chương trình từ dòng lệnh hoặc từ một phím tắt và sau đó bạn có thể sử dụng chúng trong chương trình để thay đổi luồng logic.

7

Tôi không thể hiểu được những dòng "if (arguments.length> 0) những gì hiện 'lập luận' có nghĩa là đâu nó giá trị đến từ

Nó đến từ việc kê khai phương pháp:?

public static void main(String[] arguments) { 

đó khai báo một tham số gọi arguments. Đối với một cuộc gọi phương pháp thông thường, người gọi xác định luận, và điều đó sẽ trở thành ban đầu giá trị của tham số. Ví dụ:

int foo(int x) { 
    System.out.println(x); 
} 
... 
foo(10); 

Ở đây, 10 là luận để phương pháp này, vì vậy nó là giá trị ban đầu cho tham số x.

Bây giờ một public static void phương pháp gọi là main trong Java là một điểm nhập - vì vậy khi bạn chạy:

java MyClass x y z 

JVM gọi phương thức main của bạn với một mảng chứa các đối số dòng lệnh - ở đây, nó sẽ là một mảng có độ dài 3, với các giá trị "x", "y" và "z".

Để biết thêm chi tiết, xem các bit tương ứng của hướng dẫn Java:

3

Trong trường hợp này đối số là tên biến được sử dụng cho mảng của Strings bạn cung cấp càng đầu vào khi thực thi,

tức là

java DayCounter 1 2010 

Trong trích đoạn mã sau:

public static void main(String[] arguments) 

String[] nghĩa một mảng của Strings với một tên biến của arguments. Java sử dụng nguyên mẫu hàm này cho chính làm mặc định. Xem ở đây cho một hướng dẫn: http://docs.oracle.com/javase/tutorial/getStarted/application/index.html

Vì vậy, khi bạn tham khảo length trong arguments (arguments.length), bạn đang tìm kiếm "bên trong" mảng của Strings tìm độ dài của mảng (sử dụng một built-in chức năng của Java Strings làm do đó)

1

Đầu tiên Hiểu ý nghĩa của mã trong tầm tay. Nó cho bạn biết số ngày trong một tháng nhất định trong một năm. Vì vậy, rõ ràng khi bạn chạy mã, bạn cần phải có một giá trị năm và giá trị tháng như giá trị nhất định.

Trong trường hợp này giá trị tháng và giá trị năm được cung cấp trong thời gian thực thi mã trở thành đối số. Trong trường hợp này từ "đối số" được sử dụng như vậy nhưng bạn có thể sử dụng x hoặc y hoặc xyz để đặt tên biến, như bạn biết.

Java chấp nhận đối số dưới dạng mảng Chuỗi. Vì vậy, trước khi sử dụng chúng như Integer bạn cần phân tích chúng, đó là những gì đã được thực hiện trong đoạn mã trên.

Ví dụ

class WelcomeYouself{ 

    public static void main(String[] args){ //Here insted of arguments,the word args is used. 

    System.out.println("Hello " + args[0]); 
    } 
} 

Bây giờ khi bạn chạy này bạn vượt qua tên riêng của bạn như là đối số.

java WelcomeYourself Feynman; 

// This how you run or execute the java code passing your name as the "argument". Of course it is presumed you are Feynman. 
2

- Thông thường các thông số và lập luận được sử dụng thay thế cho nhau, nhưng họ là khác nhau.

Tôi sẽ lấy một ví dụ để giải thích điều này:

public class Test{ 


    public void go(String s){ 


    } 

    public static void main(String[] args){ 

     Test t = new Test(); 
     t.go("Hello"); 

    } 

} 

- Trong mã biến trên s đó là loại String trong dòng public void go(String s)Parameter.

- Trường hợp là "Hello" thuộc loại chuỗi trong dòng t.go("Hello")Argument.

- Các yếu tố trong định nghĩa phương pháp hoặc khaiParameters, nơi như các yếu tố trôi qua trong các cuộc gọi phương phápArguments.

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