Xin chỉ dẫn về String[] args , args.length,args[0].equals("A")

Chiptk6761

New Member
24/4/20
8
1
3
japan
Em mới học về java gặp phải đoạn code này em đọc không hiểu gì hết :((:(( nhất là mấy từ khóa args.length, args[0].equals("A") ạ. các tiền bối giải thích giúp em với.
Đây là đề bài cho bác nào cần ạ . còn code em post bên dưới( bác nào không xài tiếng nhật thì đọc code giải thích giúp em vs ạ, vì em cũng không hiểu rõ lắm đề bài kiểu nửa hiểu nửa không ). không hiêu sao trên đề bài lại có cả cmd xuất hiện nữa, em càng đọc càng rối hix. em xin cảm ơn ạ.
コマンドライン引数を指定し、指定した値によって以下の例外が実際に発生するプログラムを作成してください。
※ 各例外の詳細については、JavaDocで該当クラスについて確認してみてください。

なお、以下は「コマンドライン引数の値:例外クラス」となっています。
A:ArithmeticException
B:ArrayIndexOutOfBoundsException
C:NullPointerException
例外が発生した場合には、それぞれ例外をcatchし、「○○が発生しました。」と画面に出力してください。※○○は例外名
コマンドライン引数が指定されていない場合は「コマンドライン引数が指定されていません。」、A~C以外が指定された場合は「コマンドライン引数にはA、B、Cいずれかの値を指定してください。」と画面に出力してください。

CODE :
Java:
public class Mondai1 {
    public static void main(String[] args) {
        // 引数があるかを判定
        if (args.length > 0) {
            try {

                // 値の入力チェック
                if (args[0].equals("A")) {
                    // ArithmeticException
                    // 0で除算しようとすると発生
                    float f = 2 / 0;
                    System.out.println(f);
                } else if (args[0].equals("B")) {
                    // ArrayIndexOutOfBoundsException
                    // 宣言された配列の範囲外にアクセスしようとすると発生
                    int[] array = new int[10];
                    System.out.println(array[10]);
                } else if (args[0].equals("C")) {
                    // NullPointerException
                    // nullに対して操作を行おうとすると発生
                    String nullStr = null;
                    System.out.println(nullStr.charAt(0));
                } else {
                    System.out.println("コマンドライン引数にはA、B、Cいずれかの値を指定してください。");
                }
            } catch (ArithmeticException e) {
                System.out.println("ArithmeticException が発生しました。");
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("ArrayIndexOutOfBoundsException が発生しました。");
            } catch (NullPointerException e) {
                System.out.println("NullPointerException が発生しました。");
            }
        } else {
            System.out.println("コマンドライン引数が指定されていません。");
        }
    }
}
 

nguyenha7

Member
10/11/17
36
11
8
String[] args -> Đây là tham số truyền vào khi bạn chạy main class, ví dụ

Code:
java -jar app.jar 111 222 333 444
Điều này có nghĩa khi chạy thì main function sẽ được gọi, và được truyền các tham số là 111, 222, 333, 444. Điều này tương ứng

Code:
args.length = 4
args[0] = "111"
args[0].equals("A") = false
 
  • Like
  • Love
Reactions: Chiptk6761 and Joe

Chiptk6761

New Member
24/4/20
8
1
3
japan
String[] args -> Đây là tham số truyền vào khi bạn chạy main class, ví dụ

Code:
java -jar app.jar 111 222 333 444
Điều này có nghĩa khi chạy thì main function sẽ được gọi, và được truyền các tham số là 111, 222, 333, 444. Điều này tương ứng

Code:
args.length = 4
args[0] = "111"
args[0].equals("A") = false
Em hiểu rồi cảm ơn tiền bối nhiều ạ, nhưng em xin hỏi thêm 1 chút ạ.
khi truyền tham số vào
Code:
java -jar app.jar 111 222 333 444
thì có những cách nào ạ.
em thấy trên video hay kick chuột phải chọn thực hiện xong ra hộp thoại chọn hàm chỗ có f(x) rồi gõ kí tự vào để truyền .
em thắc mắc là khi truyền tham số vào hàm bình thường thông qua biến mà sao cái này lại truyền kỳ cục như thế ạ ???
(em mới học nên không hiểu rõ lắm, mong được chỉ bảo ạ, em cảm ơn)
 

Joe

Thành viên VIP
21/1/13
3,022
1,335
113
It's the basic of Computer Science. what you said
kick chuột phải chọn thực hiện xong ra hộp thoại chọn hàm chỗ có f(x) rồi gõ kí tự vào để truyền .
is exactly what newbies should avoid to work with IDE (ellipse or netbeans or whatever). It's like you want to swim but you try to learn swimming on a boat. In this case you won't learn how to program an app if you just "kick chuột".
What the "kick chuột" does is no other thing than to arrange the selected parameters and then to put them in a way @nguyenha7 has described. You got it?
PHP:
// ArrayIndexOutOfBoundsException
int[] array = new int[10];
System.out.println(array[10]);
You declare an array with 10 elements. In Java or C/C++/C# everything starts with 0 (zero). If you address array[10] you access the element no. 11 (eleven counting from 0). ArrayIndexOutOfBoundsException
PHP:
// NullPointerException
String nullStr = null;
System.out.println(nullStr.charAt(0));
You declare nullStr is "non-existent" and try to read the 1st character as charAt(0): NullPointerException because you access some NON-existing thing.
 
Sửa lần cuối:
  • Love
Reactions: Chiptk6761

Chiptk6761

New Member
24/4/20
8
1
3
japan
It's the basic of Computer Science. what you said

is exactly what newbies should avoid to work with IDE (ellipse or netbeans or whatever). It's like you want to swim but you try to learn swimming on a boat. In this case you won't learn how to program an app if you just "kick chuột".
What the "kick chuột" does is no other thing than to arrange the selected parameters and then to put them in a way @nguyenha7 has described. You got it?
PHP:
// ArrayIndexOutOfBoundsException
int[] array = new int[10];
System.out.println(array[10]);
You declare an array with 10 elements. In Java or C/C++/C# everything starts with 0 (zero). If you address array[10] you access the element no. 11 (eleven counting from 0). ArrayIndexOutOfBoundsException
PHP:
// NullPointerException
String nullStr = null;
System.out.println(nullStr.charAt(0));
You declare nullStr is "non-existent" and try to read the 1st character as charAt(0): NullPointerException because you access some NON-existing thing.
thanks for your answer. (and sorry , my english skill is not good)
i understand the way @nguyenha7 has described and thanks for him .now i learning the base java , when i see clip teach java on youtube,i dont understand why they dont add parameters to the method by variables or any things , and i wanna learn how to do that,why they used the mouse (i also think that " i won't learn how to program an app if you just "kick chuột". like you) . Can you explain to me. if you have link l\teach about that, share for me, pleas. thank you
 
Sửa lần cuối: