2016-07-28 113 views
-3

我正遇到Java類的這個問題。我想請一些指導。JAVA「calculateFee無法解析爲類型」

的問題是:

calculateFee不能被解析爲一個類型

AuctionSale.java

public class AuctionSale 


    public double calculateFee() { 

    if (takingOffers == true) { 
     return 0; 
    } else if (reservePrice > 0) { 
     return reservePrice/20 + currentOffer/20; 
    } else { 
     return currentOffer/10; 
    } 
    } 

AuctionSaleSystem.java

public class AuctionSaleSystem 

private static void displaySalesReport() 
{ 
     System.out.println("Current Auction Sales Report:"); 
    System.out.println(); 


    for (int i=0; i<sales.length; i++) { 
    String itemNumber = sales[i].getItemNumber(); 
    String description = sales[i].getDescription(); 
    Double brokerFee = 0.00; 

    // Stuck at this point, not able to get past the error 
    // "calculateFee cannot be resolved to a type" :(
    calculateFee brokerFee = new calculateFee(); 

    brokerFee = brokerFee.calculateFee(); 


    System.out.printf("Item Number: %s, Description: %s, Broker fee: %d %n", 
         itemNumber, description, brokerFee); 
    } 
} 
+1

爲什麼所有的downvotes? –

+0

如果我理解正確'calculateFee()'是類'AuctionSale'的非靜態方法。所以爲了能夠調用它,你必須首先獲得這個類的一個實例。所以它應該像這樣:'AuctionSale brokerFee = new AuctionSale();雙費= brokerFee.calculateFee();' –

回答

2

calculateFee是一種不是類型的方法。更改爲

AuctionSale brokerFee = new AuctionSale(); 
double result = brokerFee.calculateFee(); 

System.out.printf("Item Number: %s, Description: %s, Broker fee: %d %n", 
         itemNumber, description, result); 

您應該學習Java基礎

2

calculateFee不是類這是一個method所以你不能實例化。訪問method正確的方法是通過實例AuctionSale並繼續調用方法calculateFee

AuctionSale auctioneer = new AuctionSale(); 
brokerFee = auctioneer.calculateFee(); 

System.out.printf("Item Number: %s, Description: %s, Broker fee: %d %n", 
        itemNumber, description, brokerFee); 

Here是一個很好的網站,講授在java中面向對象的編程。我建議閱讀它。

1

如果你在該行收到錯誤 -

brokerFee = brokerFee.calculateFee(); 

然後,大概這是調用calculateFee()你brokerFee對象不是類AuctionSale的對象。正確的方法應該是 -

AuctionSale brokerFee = new AuctionSale(); 
double value = brokerFee.calculateFee(); 

如果你在該行收到錯誤 -

calculateFee brokerFee = new calculateFee(); 

然後,JVM預計「calculateFee」是一類,因爲要調用構造函數。但是我想你沒有那個名字。你有一個AuctionSale類和方法calculateFee()。因此錯誤。

我想,如果你改變

calculateFee brokerFee = new calculateFee(); 

brokerFee = brokerFee.calculateFee(); 

本 -

AuctionSale brokerFee = new AuctionSale(); 
double value = brokerFee.calculateFee(); 

你應該沒問題。