没有将负值添加到数组中

Negative value not being added to Array

本文关键字:数组 添加      更新时间:2023-10-16

问题

我有两个数组,一个用于正数,一个表示负数。出于某种原因,如果要添加的第一个数字是负数,它会创建数组空间来添加该数字,但插入的数字将始终为0。

添加的代码

这是我的加法方法,它确定值是负数还是正数,并将值添加到适当的数组:

bool MyClass::addInt(int valueToBeInserted){
 if (valueToBeInserted >= 0){
    if (posArrayIterator >= sizeOfMyArray){
      return false;
    } else {
      cout << "added " <<  valueToBeInserted << "n" << endl;
      myPArray[posArrayIterator] = valueToBeInserted;
      posArrayIterator ++;
      return true;
    } 
  } else {
    if (negArrayIterator >= sizeOfMyArray){
      return false;
    } else {
      cout << "added " <<  valueToBeInserted << "n" << endl;
      myNarray[negArrayIterator] = valueToBeInserted;
      negArrayIterator ++;
      return true;
    }
  }
}

输出

通过以下测试:

b.addInt(-1);
b.addInt(-3);
b.addInt(-9);

预期输出为

[-1, -3, -9] 

但是输出是

[-3, -9, 0].

非常感谢您的帮助。

由于您没有发布整个类,我只能猜测问题出在哪里。

1( posArrayIteratornegArrayIterator是否初始化为0?他们应该是!

2( sizeOfMyArray的值是多少?

您的bool MyClass::addInt(int valueToBeInserted) 没有任何问题

参见以下示例:

class  MyClass
{
 private:
 int sizeOfMyArray;
 int posArrayIterator;
 int negArrayIterator;
 int myNarray[20];
 int myPArray[20];    
 public:
 MyClass(){
     sizeOfMyArray = 20;
     posArrayIterator = 0;
     negArrayIterator = 0;
  };
 bool addInt(int value); 
 void printNArray()
 {
   cout << "[ ";
   for (int i=0; i<negArrayIterator; i++)
   {
     cout << myNarray[i];
     if ( (i+1) < negArrayIterator ) 
     {
         cout << ", "; 
     }
   }
   cout << "]";
 }
};
 bool MyClass::addInt(int valueToBeInserted){
 if (valueToBeInserted >= 0){
    if (posArrayIterator >= sizeOfMyArray){
      return false;
    } else {
      cout << "added " <<  valueToBeInserted << "n" << endl;
      myPArray[posArrayIterator] = valueToBeInserted;
      posArrayIterator ++;
      return true;
    } 
 } else {
        if (negArrayIterator >= sizeOfMyArray){
            return false;
        }
        else {
           cout << "added " <<  valueToBeInserted << "n" << endl;
           myNarray[negArrayIterator] = valueToBeInserted;
           negArrayIterator ++;
           return true;
      }
 }
}
int main()
 {
  MyClass b;
  b.addInt(-1);
  b.addInt(-3);
  b.addInt(-9);
  b.printNArray();
  return 0;
 }

输出:

added -1
added -3
added -9
[ -1, -3, -9]