class DayCounter {
    public static void main(String[] arguments) {
        int yearIn = 2001;
        int monthIn = 2;
        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.");
    }    static int countDays(int month, int year) {
        int count = -1;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                count = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                count = 30;
                break;
            case 2:
                if (year % 4 == 0)
                    count = 29;
                else
                    count = 28;
                if ((year % 100 == 0) & (year % 400 != 0))
                    count = 28;
        }
        return count;
    }
}
上述代码中 if (arguments.length > 0)
            monthIn = Integer.parseInt(arguments[0]);
        if (arguments.length > 1)
            yearIn = Integer.parseInt(arguments[1]);的作用是什么?
为什么我把此代码注释掉的结果和没注释的结果一样呢

解决方案 »

  1.   

    arguments是从键盘接收的参数,arguments[0]是接收月份,
    arguments[1]是接收年
      

  2.   

    int yearIn = 2001;
            int monthIn = 2;
    已经给它们有值了,如果不输入也一样可以运行.
      

  3.   

    还是不明白,int yearIn = 2001;
                int monthIn = 2;不是已经定义了年,月么,怎么从键盘接收,代码运行后直接出结果,就没有让从键盘输出年,月的输入框啊
      

  4.   

    arguments是程序接受的命令行参数,以上代码表示第一个参数时解析为月分,第二个参数解析为年,没有参数时是程序给定的默认值2001年2月
      

  5.   

    还是没太明白它的作用!
    int yearIn = 2001;
    int monthIn = 2;
    已经给它们有值了,如果不输入也一样可以运行.
    不输入什么,也一样可以运行?
    是说int yearIn ;
    int monthIn ;不行,我刚才试了,必须得初始化;
      

  6.   

    上述代码中 if (arguments.length > 0)
                monthIn = Integer.parseInt(arguments[0]);
            if (arguments.length > 1)
                yearIn = Integer.parseInt(arguments[1]);的作用是什么?
    为什么我把此代码注释掉的结果和没注释的结果一样呢
    ============
    那是因为你没有加命令行参数你用:java DayCounter 12 2006运行程序你再看看结果一样不?
      

  7.   

    用命令行调用,如java yourclass argument1 argument2,程序会根据参数决定流程
      

  8.   

    java DayCounter 12 2006 用这怎么运行,我一般都是点运行-应用程序就运行了啊
      

  9.   

    用命令行调用,把这个写在那呢java DayCounter 12 2006
      

  10.   

    如果你设定好环境变量了,你就可以在你的类所在的目录,用cmd运行java DayCounter 12 2006,如果你用的是ide的运行,那你找找ide的命令行参数设定的地方加上12 2006,就可以,建议LZ多看看书