Ich versuche, eine Methode aus einer anderen Klasse aufzurufen, aber uns wurde nie beigebracht, wie man das richtig macht. Ich benötige meine prodCompany in meiner Filmklasse, um Produktionsinformationen aus meiner Produktionsklasse abzurufen, bin mir jedoch nicht sicher, wie ich dieses Ergebnis mit mehreren Varibalen in meiner Filmklasse zurückgeben kann.

\\My movie class:

   public void setProdCompany(String someName, String someCity, String someState) {
      prodCompany = someName + someCity + someState;
   }
   public String toString() {
      String result = "\nMovie Title:\t\t" + movieTitle + "\nMovie Length:\t\t" 
                + length + "\nMovie Year:\t\t" + year + "\nMovie Production:\t" +
                prodCompany + "\n\n";
        return result;
   }

\\From my production class:

 public class Production {
   private String companyName;
   private String locationCity; 
   private String locationState;

   public Production() {
      companyName = "?";
      locationCity = "?";
      locationState = "?";
   }

   public String getCompanyName() {
      return companyName;
   }
   public String getLocationCity() {
      return locationCity;
   }
   public String getLocationState() {
      return locationState;
   }
   public void setCompanyName(String someName) {
      companyName = someName;
   }
   public void setLocationCity(String someCity) {
      locationCity = someCity;
   }
   public void setLocationState(String someState) {
      locationState = someState;
   }
   public String toString() {
      String result = companyName + " at " + locationCity + " " + 
                locationState;
      return result;        
   }
}

Ansonsten funktioniert alles und meine Ausgabe lautet wie folgt:

Choice      Action
------      ------
A           Add Movie
D           Display Movie
Q           Quit
?           Display Help

What action would you like to perform? a
Please enter the Movie information:
Enter its title:  Field of Dreams
Enter its length: 107
Enter its year:   1989
Enter its production company name:     Gordon Company
Enter its production company's city:   Thomasville
Enter its production company's state:  NC
What action would you like to perform? D

Movie Title:        Field of Dreams
Movie Length:       107
Movie Year:         1989
Movie Production:   null
0
Trevor Oakes 18 Jän. 2019 im 18:27

3 Antworten

Beste Antwort

Anstatt das prodCompany in Ihrer Movie Klasse zu einem String zu machen, sollten Sie es vom Typ Production machen.

Anscheinend möchten Sie die Produktionsfirma mit Fragezeichen initialisieren. Und dann können Sie den Namen, die Stadt und den Staat der Produktionsfirma überschreiben. Ihre Movie Klasse sollte also so aussehen:

public class Movie {

    private Production prodCompany;

    public Movie() {
        prodCompany = new Production();
    }

    public void setProdCompany(String someName, String someCity, String someState) {
        prodCompany.setCompanyName(someName);
        prodCompany.setLocationCity(someCity);
        prodCompany.setLocationState(someState);
    }
...
0
cen0r 18 Jän. 2019 im 15:42

Sie müssen die grundlegende Logik Ihrer tatsächlichen Methodenfunktionalität und des Zugriffs auf eine andere Klasse festlegen und verstehen. Mal sehen, wie das geht:

public void getProdCompany() {  //Check here, there is no point passing arguments.
   Production prod = new Production();  // Calling your constructor and creating a Production instance.
   // From your Production instance:prod , you may access the getters of Production's private variables.
   prodCompany = prod.getCompanyName() + prod.getLocationCity() + prod.getLocationState();
}
0
Nikos Giannaras 18 Jän. 2019 im 15:40

Vor einem Anruf von einer anderen Klasse müssen Sie ihn instanziieren. Nachdem Sie seine Methoden aufrufen können.

So was:

private Production prodCompany = new Production();

public void setProdCompany(String someName, String someCity, String someState) {
    prodCompany = someName + someCity + someState;
0
Sirsemy 18 Jän. 2019 im 15:53