пытаясь обновить элемент массива в Java - PullRequest
1 голос
/ 25 августа 2010

Я пытаюсь обновить элемент массива в Java. Какая-то база данных, как программа, но использующая массив для временного хранения данных.

Код работает только с первым элементом массива 0. Если я пытаюсь найти другие записи, он не может найти их. Я не знаю почему.

boolean blnFound=false;
    String strP=getString("Input product to update: ");

    try{
        //loop through the array
        for(int a=0; a<iSl; a++){
            if(strP.compareToIgnoreCase(aProd_name[a])==0){

                //display information match is found
                Display("Product already registered..");
                Display("Product ID: ",aProd_id[a]);
                Display("Product Name: ", aProd_name[a]);
                Display("Product Description: ", aProd_desc[a]);
                Display("Product Size: ", aSize[a]);
                Display("Total Quantity: ", aTotalQty[a]);

                Display("Quantity on hand: ", aQtyonHand[a]);
                Display("Reorder Quantity: ", aReorder[a]);
                Display("Dealer Price: ", aDPrice[a]);
                Display("Selling Price: ", aSPrice[a]);
                Display("Manufacture date: ", aMDate[a]);
                Display("Expiry date: ", aEDate[a]);
                Display("Manufacturer: ", aManufacturer[a]);
                blnFound=true;

Вот часть, где он обновляется:

//Input new information
aProd_id[a]=getInteger("Input new  product id: ");

aProd_desc[a]=getString("Input new product description: ");
aSize[a]=getString("Input new size: ");
aTotalQty[a]=getDouble("Input new total quantity: ");
aQtyonHand[a]=getDouble("Input new quantity on hand: ");
aReorder[a]=getDouble("Input new reorder: ");
aDPrice[a]=getDouble("Input new dealer price: ");
aSPrice[a]=getDouble("Input new selling price: ");
aMDate[a]=getString("Input new manufactured date: ");
aEDate[a]=getString("Input new expiration date: ");
aManufacturer[a]=getString("Input new manufacturer: ");
Display("Product updated!");

Ответы [ 4 ]

1 голос
/ 25 августа 2010

Мне кажется, что вы используете параллельные массивы для хранения объектов одного типа. Могу ли я порекомендовать большие изменения? (Я собираюсь, что бы ты ни говорил)

Я бы создал класс с именем Product или какое-нибудь имя, которое описывает объект.

Это будет выглядеть примерно так:

public class Product {

    // members storing the data
    private int id;
    private String name;
    private String description;
    private String size;
    private int totalQuant;

    // the rest go here
}

Тогда я бы сохранил их в Map<Integer, Product>.

Product someProduct;
Map<String, Product> dataBase = new HashMap<String, Product>();
dataBase.put(someProduct.getName(), someProduct);

Так же вы бы «обновили» базу данных. Когда вводится что-то, чего еще нет в базе данных, вам просто нужно создать новый объект и поместить его в Map.

Тогда вы можете легко найти Map, например, так:

boolean productIsRegistered = dataBase.containsKey(strP);
0 голосов
/ 25 августа 2010

Вы можете попытаться изменить свой в:

for(int a=0; a<aProd_name.length; a++){

Но ваш код здесь неполный, и трудно понять, что вы действительно хотите сделать.

0 голосов
/ 25 августа 2010

А что такое iSl?Когда это определено?Как инициализируются различные массивы?Вот что я хотел бы предложить вам.

Создайте Product класс.Для этого класса определите столько полей, сколько у вас есть массивов (id, name, desc, ...).Загрузите продукты из своего хранилища и поместите их в Collection (List, Set, в зависимости от ваших потребностей).И наконец прочитайте их.Ваш код будет проще для понимания, поскольку вам придется выполнять итерации только по одному массиву вместо всех этих (я подозреваю, что один из них не инициализирован с размером больше 0).

0 голосов
/ 25 августа 2010

Не могу точно сказать, что не так ... На самом деле, я даже не вижу, где вы пытаетесь обновить массив.

Однако вы, вероятно, хотите использовать equalsIgnoreCase вместо compareToIgnoreCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...