下面一段代码关于Java数组代码的问题我不太明白~请高手指点一下~

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:07:49
public class DayCounter {
public static void main(String[]args){
int yearIn=2002;
int monthIn=12;
5行 if(args.length>0)
monthIn=Integer.parseInt(args[0]);
if(args.length>1)
yearIn=Integer.parseInt(args[1]);
System.out.println(monthIn+"/"+yearIn+"has"+countDays(monthIn,yearIn)+"days.");
}
static int countDays(int month,int year){
14行 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;
}
}
重点就是5行到14行这个位置了,我看的不太明白,请哪位大虾详细的讲解一下~~~~~~~~~谢谢~~~~~~~~~~

楼上的说的差不多了,我补充一些~~

public static void main(String []args)//这里面的args事实上是一个数组名字,这个数组就是String [],类型为String,在这里我们可以看到事实上我们写程序时,这里的args可以是任意有效的名字

这个数组的作用就是用来接受从控制台输入的参数(也就是楼上所说的命令行参数,叫控制台应该更准确点^_^),在这一段代码中,从命令行中输入第一个参数存放在args[0]中,第二个存放在args[1]中

这个参数如何输入呢:
在控制台中(就是命令行):
javac DayCount.java //编译程序这个没有什么好说的

java DyyCoutn 8 2003 //这时8就是第一个参数,同理2003就是第二个参数,8存放在args[0]中,2003存放在args[1]中

monthIn=Integer.parseInt(args[0]);
关于这一句,楼上说的我就不再说了,我补充一点,为什么要进行类型转换呢?

因为从上面也看到了,接受到参数实际上是一个字符串,上面定义的变量是int型,所以要进行转换,不然编译器会报错

我估计你不懂的地方有两个:1args.length;2Integer.parseInt(args[0]);
1在主函数中有一个args的数组,他是用来接收命令行参数的,命令行参数是说你在使用编译命令时可以传递参数,传递的参数用这个来记录,第一句是判断参数长度!
2在JAVA中对数据的操作要用他的包装类parseInt-->Int型,为什么不直接用Int来操作呢?因为他违反面向对象的思想,所以总的来说Integer.parseInt(args[0])是把args[0]这个参数变成Int型,即相当于强制类型转化!

那个args[0],就是你在控制台输入的数,就是一个数组