Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialsolange tuyisenge
3,081 Pointsgetting an error on java-objects/delivering-the-mvp/defaulting-parameters challenge
Hello am getting this error ';' expected below are my codes
public class Example {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Product pez = new Product("Cherry PEZ refill (12 pieces)");
cart.addItem(pez, 5);
/* Since a quantity of 1 is such a common argument when adding a product to the cart,
* your fellow developers have asked you to make the following code work, as well as keeping
* the ability to add a product and a quantity.
*/
Product dispenser = new Product("Yoda PEZ dispenser");
/* Uncomment the line following this comment,
after adding a new method using method signatures,
to solve their request in ShoppingCart.java
*/
public void addItem(Product item)
{
cart.addItem(dispenser, 1);
}
}
}
Thank you for assisting
Solange
3 Answers
Steve Hunter
57,712 PointsRight, I'm back at my computer now so I'll add a little more to that answer.
In this challenge you are creating a new method that is called the same as an existing one, addItem
.
The difference is that the method you are creating has a different method signature; in this case, the number of parameters are different. The existing addItem
method receives a Product
and a quantity
. It then adds quantity of Product
into your ShoppingCart
. The new method just receives a Product
as it will always just add one of that Product
to your cart.
The line of code that needs to work is:
cart.addItem(dispenser);
As you can see, this doesn't fit the existing addItem
method, which takes two parameters:
public void addItem(Product item, int quantity) { // two parameters
System.out.printf("Adding %d of %s to the cart.%n", quantity, item.getName());
/* Other code omitted for clarity. Please imagine
lots and lots of code here. Don't repeat it.
*/
}
The existing addItem method has lots of code hidden - we don't want to be duplicating any of that. But we need to change something so that it takes only one parameter. The existing method remains a requirement; we can't delete it as it is needed for instance where multiple items are added to the cart.
The new method takes a single parameter, an instance of Product and results in one of that product being added to the cart. The method signature takes one parameter:
public void addItem(Product item){
addItem(item, 1);
}
Inside that method, we call the existing addItem method but default the quantity to 1. That's what you've written already - it was just in the wrong place!
Now, if you've uncommented the line in Example.java your code should work. But remove your method definition from around it first.
I hope that helps.
Steve.
Steve Hunter
57,712 PointsHi Solange,
You need to amend the method in the ShoppingCart
class, not in Example
. The method you have created is pretty much right; it is just in the wrong place.
Note, that once in the correct class, you'll not have an instance to call it from; that's fine. You have the correct concept; call the exisiting method from inside the new one.
Have a go and let me know how you get on.
Steve.
Rob B
11,677 PointsI'm glad that someone is able to explain what is needed. I've taken an Intro course to Java and I am having trouble understanding what is needed in these exercises lately. (It's partially why I stepped away from the track for a while)
Steve Hunter
57,712 PointsHi Rob,
Give the courses a go and shout in the Community pages if you get stuck. Someone will be able to help - you can @ mention me if you need urgent help.
Steve.
solange tuyisenge
3,081 PointsThank you very much Steve. you helped me to understand and get it done.
Regards,
Solange
Steve Hunter
57,712 PointsNo problem. Glad to help.
Ciaran McNally
7,052 PointsCiaran McNally
7,052 PointsThanks for explaining this, took me some time to get my head round it. I'm hoping this will come more naturally soon.
Steve Hunter
57,712 PointsSteve Hunter
57,712 Points