我正在编写一个程序,该程序从同一文件夹中的不同类调用“invoice”方法。我一直收到以下错误:
error: cannot find symbol
strInvoice = invoice();
^
symbol: method invoice()
以下是我在程序中调用方法的方法:
strInvoice= invoice();
JOptionPane.showInputDialog(null, strInvoice, "*Name*'s Party Store", -1);
这是该方法在位于同一文件夹中的类文件中的样子:
public String invoice()
{
String strInfo=""; //string returned containing all the information
double dBalloonNoDiscount; //balloon total without discount
double dCandleNoDiscount; //candle total without discount
double dBannerNoDiscount; //banner total without discount
double dSubtotal; //subtotal
double dTax; //tax
double dShippingCost; //shipping cost
double dTotal; //total
String strShippingType; //shipping type
dBalloonNoDiscount = balloons * 2.50;
dCandleNoDiscount = candles * 6.00;
dBannerNoDiscount = banners * 2.00;
dSubtotal = subtotal();
dTax = tax();
dShippingCost = shippingCost();
strShippingType = shippingType();
dTotal = orderTotal();
strInfo += "\nQuantity"
+ "\n\nBalloons: " + balloons + " @ $2.50 = "
+ df.format(dBalloonNoDiscount) + "* Discount Rate: "
+ df.format(discount('B')) + " = "
+ df.format(subtotal('B'))
+ "\n\nCandles: " + candles + " @ 6.00 = "
+ df.format(dCandleNoDiscount) + "* Discount Rate: "
+ df.format(discount('C')) + " = "
+ df.format(subtotal('C'))
+ "\n\nBanners: " + banners + " @ $2.50 = "
+ df.format(dBannerNoDiscount) + "* Discount Rate: "
+ df.format(discount('N')) + " = "
+ df.format(subtotal('N'))
+ "\nSubtotal: " + df.format(dSubtotal)
+ "\n Tax: " + df.format(dTax)
+ "\nShipping: " + df.format(dShippingCost) + " - "
+ strShippingType
+ "\n Total: " + dTotal;
return strInfo;
}
我希望这是足够的信息。我似乎无法找到问题。
答案 0 :(得分:2)
I am writing a program that calls upon the "invoice" method from a different
class in the same folder.
然后你称之为:
strInvoice= invoice();
这不起作用,因为您需要将此方法称为:
strInvoice = obj.invoice();
其中obj是另一个类的实例。
或者,如果invoice()
方法为public static
,那么您也可以将其称为:
strInvoice = SomeClass.invoice();
答案 1 :(得分:1)
如果你正在调用调用它的类之外的方法,那么在调用方法之前你需要一个引用。
在您的情况下,invoice()方法在其他类中可用,并且您在其他类中调用此方法,因此您需要一个类(对象)的引用,其中invoice()方法可用。 例如:
ClassA object = new ClassA();
object.invoice(); // assume invoice method is available in ClassA.
答案 2 :(得分:0)
如果您希望能够从其他类调用方法,则需要将该方法设置为静态,或者需要获取定义它的类的实例。
在您的情况下,您可能需要一个实例,例如:
YourClass instance = new YourClass();
然后再说:
strInvoice = instance.invoice();