首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

【Java 每日一題】20161223 - 命令列參數與條件判斷輸出分析

     編輯:Java 綜合教學

題目程式碼

package Dec2016;
public class Ques1223 {
    public static void main(String[] args) {
        Integer obj = Integer.valueOf(args[args.length - 1]);
        int i = obj.intValue();
        if (args.length > 1) {
            System.out.println(i);
        }
        if (args.length > 0) {
            System.out.println(i - 1);
        } else {
            System.out.println(i - 2);
        }
    }
}

問題

請問主程式輸出的值是不變的嗎?

分析

  1. 程式讀取命令列參數的最後一個引數 (args[args.length - 1]) 並轉為整數 i。
  2. 第一個 if:若參數個數 > 1,輸出 i。
  3. 第二個 if-else:若參數個數 > 0,輸出 i - 1;否則 (參數個數為 0) 輸出 i - 2。

情況推演

參數個數args.lengthi 值來源輸出內容
00拋出 ArrayIndexOutOfBoundsException (存取 args[-1])程式崩潰,無輸出
11args[0]i - 1 (第二個 if 執行)
22args[1]i (第一個 if) 然後 i - 1 (第二個 if)
>=3>=3args[last]同參數個數=2

結論

輸出值不是不變的,它取決於:

  • 命令列參數的個數 (影響流程控制)
  • 最後一個參數的具體數值 (影響 i 的值)

此外,若無參數執行會直接拋出異常終止。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved