Ví dụ xuất dãy Fibonacci từ 1 ->n, với n lấy từ command line


Topic này Tôi sẽ hướng dẫn các bạn 2 cách chạy chương trình.

1. Lấy giá trị Arguments từ Command Line trong cửa sổ Run của Windows.

2. lấy giá trị Arguments bằng Công cụ Eclipse

Mô tả bài toán:

Hãy xuất dãy số Fibonacci từ 1->n với n là giá trị được lấy từ Command Line

giả sử trong Command Line người sử dụng nhập là số 10 thì chương trình phải xuất ra dãy số Fibonacci là:

1   1    2    3    5    8    13    21    34    55

-Như vậy chúng ta phải viết 1 class Java như thế nào để chương trình có thể tự động lấy được giá trị nhập vào từ command Line?

Ví dụ dưới đây sẽ làm rõ điều đó:

-Các bạn tạo 1 project tùy ý, sau đó tạo 1 class đặt tên là : PrintListFibonacci, dĩ nhiên khi các bạn tạo tên class thì Java tự động tạo ra 1 tập tin .java có tên y chang như tên class (PrintListFibonacci.java).

Dưới đây là nội dung của class PrintListFibonacci

public class PrintListFibonacci {

 

       public static void main(String[] args) {

              if(args!=null)

              {

                     int n=Integer.parseInt(args[0]);

                     printListFib(n);

              }

       }

       private static int fib(int n)

       {

              if(n<=2)

                     return 1;

              return fib(n-1)+fib(n-2);

       }

       private static void printListFib(int n)

       {

              for(int i=1;i<=n;i++)

              {

                     int fi=fib(i);

                     System.out.print(fi+” “);

              }

       }

}

Giải thích Coding:

Trong hàm main, các bạn để ý lệnh:

if(args!=null) args chính là danh sách các đối số được nhập vào từ Command Line, cách nhập như thế nào các bạn sẽ theo dõi ở bên dưới.

Còn dòng lệnh: Integer.parseInt(args[0]); Dùng để chuyển đổi kiểu chuỗi qua kiểu int. Hiện tại args là một mảng có kiểu chuỗi. Trong ví dụ này Tôi chỉ nhập có 1 đối số trong command Line, như vậy dĩ nhiên args[0] là ý định Tôi muốn lấy giá trị đầu tiên này. Nếu như các bạn nhập 1 danh sách các đối số thì các bạn có thể dùng vòng lặp để lấy ra giá trị từng đối số, chú ý rằng các đối số mặc nhiên sẽ có kiểu chuỗi, do đó tùy vào mục đích của bài toán mà các bạn chọn cách ép kiểu cho hợp lý (Tôi sẽ làm một ví dụ về trường hợp này trong topic kế tiếp => Bài toán tính tổng các số thực từ Command line).

Dòng lệnh printListFib(n); dùng để gọi hàm xuất ra toàn bộ các số Fibonacci từ 1->n

Tới đây các bạn có thể vào hàm printListFib để xem coding bên trong.

hàm fib(int n) để trả về số Fibonacci tại vị trí thứ n. Như vậy hàm này sẽ được gọi trong hàm printListFib

——————————————————————————————————

Bây giờ các bạn xem Tôi hướng dẫn cách chạy bằng command line từ cửa sổ Run:

Giả sử rằng class PrintListFibonacci được lưu trữ như trong hình minh họa bên dưới:

Giải thích lệnh:

– Trước tiên bạn nên copy đường dẫn lưu tập tin Java Source code (bạn để ý màu vàng mà Tôi bôi) vào clipboard

Tại sao lại có dòng lệnh: c:\User>cd    E:\HUI\Java\Study\java1sourcecode\src

ở đây Tôi cố tình dán E:\HUI\Java\Study\java1sourcecode\src vào màn hình Dos  này, để dán vào thì các bạn chỉ cần click chuột phải vào ngay dòng đó thì lập tức những gì nằm trong clipboard sẽ bay vào đây.

-Bạn xem dòng số 2: c:\Users\USER>e:Đây Tôi muốn chuyển dấu nhắc lệnh tới ổ E. Sau khi nhấn phím Enter thì bạn quan sát, dấu nhắc lệnh sẽ vào luôn ngay thư mục mà bạn lưu trữ tập tin PrintListFibonnacci.java

-Ta biên dịch tập tin .java sang .class bằng lệnh : javac     PrintListFibonnacci.java

-Cuối cùng để chạy chương trình, ta dùng lệnh java     PrintListFibonnacci   10

các bạn chú ý số 10 ở đằng sau tên class. Nhớ là có khoảng trắng xong rồi mới tới số 10. số 10 chính là đối số được nhập vào từ Command Line. Như vậy biến args sẽ lưu trữ được đối số này.

Bạn có thể kiểm tra hàm main để xem chương trình phân tích lấy giá trị 10 từ mảng args

Các bạn vừa xem qua cách chạy chương trình bằng Command Line trong cửa sổ Run của Windows.

Bây giờ Tôi hướng dẫn cách chạy chương trình giống như bên trên nhưng mà lại dùng công cụ Eclipse. Khi chúng ta dùng Eclipse thì vấn đề trở nên nhẹ nhàng và bạn cũng có thể cảm thấy cuộc đời này sung sướng biết bao.

Các bạn hãy xem những hình minh họa bên dưới để làm theo:

-Đầu tiên các bạn vào menu Run / chọn Run Configurations… như hình vẽ (chỗ Tôi tô màu vàng)

Sau khi chọn xong thì bạn sẽ thấy cửa sổ Run Configurations hiện ra như bên dưới:

Bây giờ các bạn chú ý những phần Tôi tô màu vàng và khoanh vùng màu đỏ:

– 1. Danh mục bên trái cửa sổ bạn chọn đúng Class mà bạn muốn chạy, ở đây là class PrintListFibonacci.

– 2. Sau đó bạn vào tab Arguments. Bạn nhập vào số 10 trong phần Program arguments

-3. Cuối cùng bạn click nút Run để chạy chương trình thế là xong.

=> quan sát tab Console ở bên dưới màn hình trong hình họa bạn sẽ thấy kết quả xuất hiện như trong này:

Các bạn hãy thử những bước như Tôi làm để kiểm tra lại.

Chúc các bạn thành công.

Chú ý: trong những trường hợp bạn không thấy tab Console thì có thể nó chưa được hiển thị lên, do đó bạn phải làm như sau (xem hình minh họa):

Bạn vào menu Window / Show View / => chọn các cửa sổ trong này

3 responses

  1. thua thay … o phan chay “command line từ cửa sổ Run” de chay dc thi phai copy duong dan tap tin .. nhung e ko biet tap tin luu o dau het .. lam sao biet minh luu o dau khi ket thuc chuong trinh .. xin thay chi dan

    1. Để kiểm tra xem em lưu tập tin ở đâu thì trong Eclipse em bấm chuột phải vào Project/ chọn Properties, trong cửa sổ Properties em quan sát có lưu đường dẫn trong này.

  2. sao em cho chạy mà báo lỗi chữ parseInt thầy nhỉ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: