Для вашего второго выпуска:
for(int i = 0; i< productsList.size(); i++) {
String account=productsList.get(i);
splittedInfoProd= account.split(",");
productObject.setProductID(splittedInfoProd[0]);
productObject.setName(splittedInfoProd[1]);
productObject.setSupplier(splittedInfoProd[2]);
productObject.setPrice(Double.valueOf(splittedInfoProd[3]));
productObject=new Products(productObject.getID(),productObject.getNAme(),productObject.getSupplier(),productObject.getPrice());
store.setArrProd(productObject);
} System.out.println(productObject.getPrice());
Ваш productObject имеет глобальное отклонение в классе OrderedItem
. Так что в конце цикла for ваш объект будет хранить последние значения, а когда распечатайте его, он напечатает последнее значение. Чтобы получить все цены, вы должны выполнить итерацию массива.
ArrayList<Products> list = store.getArrprod();
for(Products p : list){
System.out.println(p.getPrice());
}
То, о чем говорит Daniel, - то, что необходимо будет выделить память для массива динамично, когда Тест (ширина, высота) метод назовут.
Вы объявили бы свое двумерное как это (принятие массива целых чисел):
int ** _array;
И затем в Вашем Методе тестирования Вы должны были бы сначала выделить массив указателей, и затем для каждого указателя выделяют массив целых чисел:
_array = new *int [height];
for (int i = 0; i < height; i++)
{
_array [i] = new int[width];
}
И затем когда объект выпущен, Вы должны будете к явному удалить память, которую Вы выделили.
for (int i = 0; i < height; i++)
{
delete [] _array[i];
_array [i] = NULL;
}
delete [] _array;
_array = NULL;
Я думаю, что пора Вам искать новые / операторы delete.
Наблюдение, поскольку это - многомерный массив, Вы оказываетесь перед необходимостью цикл посредством вызова 'нового', когда Вы идете (и снова не забыть: удалите).
Хотя я уверен, что многие предложат использовать одномерный массив с width*height элементами.
вектор является Вашим лучшим другом
class Test
{
private:
vector<vector<int> > _array;
public:
Test(int width, int height) :
_array(width,vector<int>(height,0))
{
}
};
(через несколько месяцев) можно использовать шаблоны, например:
// array2.c
// http://www.boost.org/doc/libs/1_39_0/libs/multi_array/doc/user.html
// is professional, this just shows the principle
#include <assert.h>
template<int M, int N>
class Array2 {
public:
int a[M][N]; // vla, var-len array, on the stack -- works in gcc, C99, but not all
int* operator[] ( int j )
{
assert( 0 <= j && j < M );
return a[j];
}
};
int main( int argc, char* argv[] )
{
Array2<10, 20> a;
for( int j = 0; j < 10; j ++ )
for( int k = 0; k < 20; k ++ )
a[j][k] = 0;
int* failassert = a[10];
}