问题描述
每次我运行代码时,我都会得到一个长度为 12 的索引 12 超出范围。我不确定是什么问题。 代码如下:
enter code here: int getDayNumber(int day,int month,int year) {
if(this.leapYear(year)) {
int months[] = {31,29,31,30,31};
int cnt = 0 ;
for(int i=0;i<month-1;i++) {
cnt += months[i];
System.out.println(cnt + " " + i);
}
return cnt + day ; // count = cnt
解决方法
您在循环中使用的 (month - 1) 指向函数 getDayNumber 中参数中传递的月份。考虑使用 .length 函数来计算数组的长度。尝试使用 for 循环,例如:
for(int i = 0 ; i < months.length ; i++)
您对 Array 工作原理的概念非常清楚!只需使用months.length 就可以了。告诉我这对你有什么影响!
, package projectlearn1;
public class ArrayQueue {
private int[] mArray;
private int mCount;
public ArrayQueue(int sz) {
mArray=new int[sz];
mCount=0;
}
public void add(int val){
mArray[mCount++]=val;
}
public int front(){
return mArray[0];
}
public int pop(){
int ret=mArray[0];
mCount--;
for (int i = 0; i < mCount; i++) {
mArray[i-1]=mArray[i];
}
return ret;
}
public int size(){
return mCount;
}
public boolean isEmpty(){
return size()==0;
}
public static void main(String[] args) {
int tmp=0;
ArrayQueue astack=new ArrayQueue(12);
astack.add(10);
astack.add(20);
astack.add(30);
tmp=astack.pop();
System.out.printf("tmp=%d\n",tmp);
tmp=astack.front();
System.out.printf("tmp=%d\n",tmp);
astack.add(40);
System.out.printf("isEmpty()=%b\n",astack.isEmpty());
System.out.printf("size()=%d\n",astack.size());
while (!astack.isEmpty()){
System.out.printf("size()=%d\n",astack.pop());
}
}
}