Reputation: 11
I keep getting the errors:
3 errors found:
File: C:\Users\TUFRob\Documents\Computer Science II\Retail\RetailItemDemo.java [line: 6]
Error: constructor RetailItem in class RetailItem cannot be applied to given types;
required: int,double,java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
File: C:\Users\TUFRob\Documents\Computer Science II\Retail\RetailItemDemo.java [line: 7]
Error: constructor RetailItem in class RetailItem cannot be applied to given types;
required: int,double,java.lang.String
found: java.lang.String,int,double
reason: actual argument java.lang.String cannot be converted to int by method invocation conversion
File: C:\Users\TUFRob\Documents\Computer Science II\Retail\RetailItemDemo.java [line: 8]
Error: constructor RetailItem in class RetailItem cannot be applied to given types;
required: int,double,java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
When I try to run my java program:
public class RetailItemDemo
{
public static void main(String[]args)
{
RetailItem item1 = new RetailItem();
RetailItem item2 = new RetailItem("Designer Jeans", 40, 34.95);
RetailItem item3 = new RetailItem();
}
}
with this class:
public class RetailItem
{
private String description;
private int unitsOnHand;
private double price;
public RetailItem(int unitsOnHand, double price, String description)
{
this.unitsOnHand = unitsOnHand;
this.price = price;
this.description = description;
}
}
I'm having trouble seeing what might be causing the error
Upvotes: 0
Views: 6420
Reputation: 425
Your RetailItem
has only one Constructor:
public RetailItem(int unitsOnHand, double price, String description){...}
Then, all of your call are wrong:
//Problem 1: wrong because you have no constructor with no param
RetailItem item1 = new RetailItem();
RetailItem item3 = new RetailItem();
And
// Problem 2:
RetailItem item2 = new RetailItem("Designer Jeans", 40, 34.95);
//wrong because your Constructor is RetailItem(int, double, String)
// not RetailItem(String, int, double)
How to fix:
Add default Constrcutor (no param) in you class to solve Problem 1
public RetailItem(){
}
To solve Problem 2, Change line 11 to:
RetailItem item2 = new RetailItem( 40, 34.95,"Designer Jeans");
Upvotes: 0
Reputation: 7630
Constructor of RetailItem has input parameter like int, double and string. You should pass parameter value in order as per definition of it. otherwise it will give compile time error
. here you did same mistake.
Problem 1:
RetailItem item2 = new RetailItem(40, 34.95, "Designer Jeans");
instead of
RetailItem item2 = new RetailItem("Designer Jeans", 40, 34.95);
Problem 2:
RetailItem item3 = new RetailItem();
This syntax will try to call default constructor. In RetailItem
class, you did not define default constructor as it will also give compile time error
. Default constructor exist default only when no other constructor defined, otherwise you have to manually define it.
Refer: what is constructor in java?
Upvotes: 1