aspose file tools*
The moose likes Beginning Java and the fly likes My loop isn't working Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "My loop isn Watch "My loop isn New topic
Author

My loop isn't working

Tiffany Walker
Greenhorn

Joined: Oct 14, 2011
Posts: 10
[size=12]
I'm making an inventory program for class. It has a loop that should cycle through the array and print the information. Part of the loop is supposed to add the value from each inventory item together to get the total value of the inventory. However, instead the program simply adds the last value entered to itself repeatedly. There is no compiler error, but the program isn't doing what it should.

Here is my code for the Product class.


And my loop


[/size]
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 10909
    
  12

assuming the loop you are talking about is the one on lines 66-72 of the InventoryDisplay class...it makes no reference to any array. I am GUESSING you want to loop over your "inventory" array, but nowhere in that block do you make reference to it. At least, not on line 68, where you are making your sum.


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 7032
    
  16

Tiffany Walker wrote:I'm making an inventory program for class. It has a loop that should cycle through the array and print the information. Part of the loop is supposed to add the value from each inventory item together to get the total value of the inventory. However, instead the program simply adds the last value entered to itself repeatedly. There is no compiler error, but the program isn't doing what it should.

My reply isn't directed at your code, but more to inform you of a design pattern called "cooperative classes".

Since your Inventory system is likely to need to keep track of loads of "products", what you do is to split your class into Product (stuff that has to do with a specific product) and Products (stuff that has to do with many Products).

The only rule you need to generally follow, Java-wise, is that both classes should be in the same package; and you may need to make some private methods package-private.

One of the uses for a class like Products is for holding summary information (eg, total cost), and it works like this:
Instead of running through your entire list, just have your Product object talk to the Products object every time a change is made. That way, you only need to add/subtract the value from whatever running total you have.

Inventory maths is pretty simple; it's the model that gets complicated (often unnecessarily, even by experts; and believe me, I know (30 years, mostly in inventory systems of some description)). The trick is to keep it simple.

Winston

Oh, and while I'm on my hobby-horse: you should be very careful about using words like "value" with a Warehouse manager:
  • Value - Hunh? Whassat??
  • Cost (the amount you paid) - Might mean something, but usually filled in on a form by Head Office.
  • RetailPrice - Again, may have some meaning, though probably only grudgingly, because it usually means changing price tags.
  • RecoverableValue - Absolutely. Read: "if this warehouse burns down, what's it worth?"

  • (the above from "the Yorkshire guide to Inventory Management")


    Isn't it funny how there's always time and money enough to do it WRONG?
    Artlicles by Winston can be found here
    Tiffany Walker
    Greenhorn

    Joined: Oct 14, 2011
    Posts: 10
    Thank you for replying. So really I should redesign the classes, not tweak the code?
    Winston Gutkowski
    Bartender

    Joined: Mar 17, 2011
    Posts: 7032
        
      16

    Tiffany Walker wrote:Thank you for replying. So really I should redesign the classes, not tweak the code?

    A toughie. My reply was intended to address the problem in general; not yours.
    It's quite likely that you'll get a solution to your code problem (ie, getting it to compile and run); the question for you then is: is that enough?

    For now, my advice would be: get your current code running with the advice you get here; then read my post and see if it makes sense. If so, bang out a new question.

    Winston
    Tiffany Walker
    Greenhorn

    Joined: Oct 14, 2011
    Posts: 10
    Thanks for the help Winston. I got the code working.
    total += inventory[counter].value(CD.getPrice(), CD.getUnits());
    fixes my problem. I do have another class I didn't post here called
    InventoryOfCD's that shows how the products occupy the inventory.
    I made it honestly mimicking the textbook on a similar issue. Is that what
    you referred to?
    Winston Gutkowski
    Bartender

    Joined: Mar 17, 2011
    Posts: 7032
        
      16

    Tiffany Walker wrote:I do have another class I didn't post here called
    InventoryOfCD's that shows how the products occupy the inventory.
    I made it honestly mimicking the textbook on a similar issue. Is that what
    you referred to?

    Sounds like it. If you put your 'total' field in there, you could just add or subtract from it whenever you put CDs in or take them out of inventory rather than having to recalculate it every time.

    Not that there's anything wrong with what you're doing now; it's just a different approach. Your way has the advantage of being dead simple, so it's unlikely to go wrong. Keeping a running total is a bit trickier. For a home CD collection or a small shop, your way is probably best; but for a Virgin distribution centre, the time you save from running through millions of CDs every time you want a total may make it worthwhile.

    Either way, you might want to think about adding a 'getTotalValue()' method to your inventory class and putting the calculation code in there. That way you can change the way you do it later on without affecting any other code.

    As with most things in programming, there's usually more than one way to do something and often no "right" answer. The trick is to know what the alternatives are.

    Winston
     
    I agree. Here's the link: http://aspose.com/file-tools
     
    subject: My loop isn't working
     
    Similar Threads
    Exception in Thread-Inventory Program
    Sorting Arrays
    Need help with Car Inventory Program part 3
    Java help.
    Why is my type unexpected? required variable found value