Java - 错误:找不到符号

时间:2013-04-17 18:08:52

标签: java

我正在编写一个程序,该程序从同一文件夹中的不同类调用“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;
}

我希望这是足够的信息。我似乎无法找到问题。

3 个答案:

答案 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();
相关问题