2017-11-09 3 views
-1

私はspecifcally、配列範囲例外のインデックスアウトを取得しています理由はわかりません。エラーが

public int dequeue() 
{ 
    if(isEmpty() == true) 
    { 
     return -1; 
    } 
    else 
    { 
     count--; 
     front = (front + 1) % q.length; 
     return q[front - 1]; 
    } 
} 

私はいくつかのことを試しましたが、まだ解決策には出ません。すべての援助は高く評価されており、回答したすべての人に前もって感謝しています。

EDIT(ソリューション):あなたのdeque方法のこの部分に見れば

public int dequeue() 
    { 
     if(isEmpty() == true) 
     { 
      return -1; 
     } 
     else 
     { 
      count--; 
      front = (front + 1) % q.length; 
      return q[(front - 1 + q.length) % q.length]; 
     } 
    } 

答えて

0

あなたの方法に基づき、私は、あなたが循環キューを実装していると仮定します。

front = (front + 1) % q.length; 
    return q[front - 1]; 

あなたがいますキューの前面を移動し、新しいフロントの前にあるアイテムを返すと、キューが循環しているので、front0と等しくなり、frontq.length - 1に等しいので、e index = -1で配列にアクセスしようとしたときのxception。

int element = q[front]; 
    front = (front + 1) % q.length; 
    return element; 
return q[(front - 1 + q.length) % q.length];のようなデキューされた要素を戻しながら、それを修正する

一つの方法は、モジュール式の操作を適用することであろう、別の方法は、このように、フロントを移動する前に要素を格納することができ