I keep getting this error saying incompatible types: java.io.PrintStream cannot be converted to java.lang.String
and I don't get how to get it to work for my toString Method. I've tried assigning it to a variable and then returning it, and then just plan printing it out as a return statement, I don't see anything wrong with my printf formatting. Help is appreciated.
import java.text.NumberFormat;
public class Item
{
private String name;
private double price;
private int quantity;
// -------------------------------------------------------
// Create a new item with the given attributes.
// -------------------------------------------------------
public Item (String itemName, double itemPrice, int numPurchased)
{
name = itemName;
price = itemPrice;
quantity = numPurchased;
}
// -------------------------------------------------------
// Return a string with the information about the item
// -------------------------------------------------------
public String toString ()
{
return System.out.printf("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
}
// -------------------------------------------------
// Returns the unit price of the item
// -------------------------------------------------
public double getPrice()
{
return price;
}
// -------------------------------------------------
// Returns the name of the item
// -------------------------------------------------
public String getName()
{
return name;
}
// -------------------------------------------------
// Returns the quantity of the item
// -------------------------------------------------
public int getQuantity()
{
return quantity;
}
}
return System.out.printf("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
You are trying to return PrintStream
. That is not correct caause the toString should return a String.
You should have used String#format
method, which gives back a String after fomratting
return String.format("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);