2016-07-28 119 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(); 

你应该没问题。