我的代码有什么问题?这是例外

时间:2013-05-17 06:50:56

标签: java runtime-error

我已编写此代码,因为我想在7个数字中连续打印5个最小数字,但不想打印重复值。现在给出一些例外。

该怎么办?

我想我需要动态类型Arraylist,但我不知道确切地应用它。

class mycode{

    public static void main(String[] args) {

    boolean lowStraightFound = false;
    int firstCard=0 ;
    int firstCardIndex = 0;
    int lastCard =0;
    int lastCardIndex = 0;
    int c[]={1,2,3,3,4,5,7};
    int[] inarow = new int[20];
    int index[]=new int[5];
    int last=0;

    int num = c.length;
    for (int i = 0; i < num; i++) {
       int card = c[i];
        if (lastCard!= 0) {
            int lastOrd = lastCard;
            int cardOrd = card;
            if (cardOrd - lastOrd  == 1) {
                inarow[0]++;
                lastCardIndex = i;
                last++;
                index[last]=i;   
            } else if (cardOrd - lastOrd != 0) {
                inarow[0] = 1;
                firstCard = card;
                firstCardIndex = i;
                last=0;
                index[last]=i;
               }else if(cardOrd - lastOrd == 0){
                  index[last]=i;
                  last=i;  
               }
        } else {
            firstCard = card;
            firstCardIndex = i;
            index[last]=i;
        }
        lastCard = card;

        if (inarow[0] == 5) {
            lowStraightFound = true;
            break;
        }          
    }
        for (int i = last; i >= 0; i--) {
          System.out.println(c[i]);
        }
        }
}

2 个答案:

答案 0 :(得分:1)

这个

last++;
index[last]=i;

应改为

index[last++]=i;

避免ArrayIndexOutOfBoundsException

答案 1 :(得分:0)

我猜你得到ArrayIndexOutOfBoundsException

要防止出现这种情况,请更改第28行:

index[last]=i;

进入这个:

index[last++]=i;

或更改第14行:

int index[]=new int[5];

进入这个:

int index[]=new int[6];

因为你的索引达到5(数组大小 - 1)