2016-07-28 21 views
-3

Ich habe dieses Problem mit einer Java-Klasse. Ich hätte gerne einen Reiseführer.JAVA "calculateFee kann nicht in einen Typ aufgelöst werden"

Die Frage ist:

calculateFee kann nicht auf eine Art gelöst werden

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

warum alle downvotes? –

+0

Wenn ich richtig verstanden habe 'calculateFee()' ist eine nicht-statische Methode der Klasse 'AuctionSale'. Um es aufrufen zu können, müssen Sie zunächst eine Instanz dieser Klasse erwerben. So sollte es etwa so aussehen: 'AuctionSale brokerFee = new AuctionSale(); doppelte Gebühr = brokerFee.calculateFee(); ' –

Antwort

2

calculateFee ist eine Methode, kein Typ. Wechseln Sie in

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

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

Sie sollten die Java Basics lernen

2

calculateFee ist keine Klasse ist es ein method so können Sie es nicht instanziiert. Der richtige Weg, um dieses method zugreifen würde durch AuctionSale Instanziieren und Verfahren betreffend die Methode calculateFee nennen

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

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

Here ist eine gute Website, die über die objektorientierte Programmierung in Java lehrt. Ich würde vorschlagen, es zu lesen.

1

Wenn Sie immer Fehler auf dieser Linie -

brokerFee = brokerFee.calculateFee(); 

Dann wahrscheinlich Ihr brokerFee Objekt, das calculateFee ruft() ist nicht ein Objekt der Klasse AuctionSale. Die richtige Art und Weise sollte es sein -

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

Wenn Sie Fehler in dieser Zeile bekommen -

calculateFee brokerFee = new calculateFee(); 

Dann JVM ‚calculateFee‘ erwartet eine Klasse zu sein, weil Sie einen Konstruktor aufrufen. Aber Sie haben keine Klasse mit diesem Namen, nehme ich an. Sie haben eine Klasse AuctionSale mit der Methode calculateFee(). Daher der Fehler.

Ich denke, dass, wenn Sie

calculateFee brokerFee = new calculateFee(); 

brokerFee = brokerFee.calculateFee(); 

Um dies zu ändern -

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

Bist du in Ordnung sein sollte.