我不断收到此错误,说明不兼容的类型:java.io.PrintStream cannot be converted to java.lang.String
我并不知道如何让它为我的toString方法工作。我已经尝试将其分配给变量然后将其返回,然后只计划将其打印为return语句,我没有看到我的printf格式有什么问题。感谢帮助。
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;
}
}
答案 0 :(得分:1)
System.out.printf
不返回字符串,您正在寻找String.format
public String toString () {
return String.format("%-15s $%-8.2f %-11d $%-8.2f", name, price, quantity, price*quantity);
}
答案 1 :(得分:1)
return System.out.printf("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
您正在尝试返回PrintStream
。这是不正确的,因为toString应该返回一个String。
你应该使用String#format
方法,在fomratting之后返回一个字符串
return String.format("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
答案 2 :(得分:1)
更改
System.out.printf("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
到
String.format("%-15s $%-8.2f %-11d $%-8.2f", name, price,
quantity, price*quantity);
因为System.out.println()
用于将字符串打印到控制台。不要创建格式化字符串 -
答案 3 :(得分:1)
错误是由
引起的return System.out.printf(....)
如果你真的想从这个方法返回一个String,那么试试
return String.format(....);