2017-05-14 2 views
0

Ich versuche, ein wütendes libs Spiel zu machen, wo der Benutzer 5 Variablen (Substantiv, Adjektiv, Verb, Adverb, 2. Substantiv) eingeben würde, die dann in meinen Unterklassen für andere verwendet werden würden "Bibliotheken". Das Problem ist, dass wenn ich meine Parameter eingib, diese als Null ausgibt. Ich bin mir sicher, es gibt eine einfache Möglichkeit, dieselben Eingaben für verschiedene toStrings zu verwenden, aber ich bin neu in der Vererbung und bin mir nicht sicher, wie dieser Teil davon funktioniert.Unterklasse toString Drucken null? (unter Verwendung der gleichen Parameter für verschiedene toStrings)

(sah mich auf anderen toString null Problemen, aber keiner von ihnen ganz mit meiner Situation gearbeitet, oder es gab Dinge falsch mit ihrem Erbauer. Ich bin ziemlich sicher, es gibt nichts falsch mit mir.)

Hier meine Phrase Superklasse:

public class Phrase 
{ 
    private String noun; 
    private String adjective; 
    private String verb; 
    private String adverb; 
    private String noun2; 

    public Phrase (String n, String a, String v, String ad, String n2) 
    { 
     n=noun; 
     a=adjective; 
     v=verb; 
     ad=adverb; 
     n2=noun2; 
    } 

    public String getNoun() 
    {return noun;} 

    public String getAdj() 
    {return adjective;} 

    public String getVerb() 
    {return verb;} 

    public String getAdverb() 
    {return adverb;} 

    public String get2Noun() 
    {return noun2;} 

    //i'll need the get methods in the libs classes and the set methods in the 
    while loop, if user wants to change parameters 

    public void setNoun (String Newnoun) 
    {noun=Newnoun;} 

    public void setAdj (String newAdj) 
    {adjective=newAdj;} 

    public void setVerb (String newVrb) 
    {verb=newVrb;} 

    public void setAdverb (String newAdv) 
    {adverb=newAdv;} 

    public void set2Noun (String newNoun2) 
    {noun2=newNoun2;} 

} 

Hier ist meine Unterklasse:

public class Obama extends Phrase 
{ 
    public Obama(String noun, String adjective, String verb, String adverb, 
      String noun2) 
    {super (noun, adjective, verb, adverb, noun2);} 

    public String getNoun() 
    {return super.getNoun();} 

    public String getAdj() 
    {return super.getAdj();} 

    public String getVerb() 
    {return super.getVerb();} 

    public String getAdverb() 
    {return super.getAdverb();} 

    public String get2Noun (String n) 
    {return super.get2Noun();} 


    public String toString() 
    { 
     return ("there is a " + super.getAdj() + " " + super.getNoun() +" on the 
       floor! It is " + super.getVerb() +"ing " + super.getAdverb() +". Next to it 
       is a " + super.get2Noun()); 
    } 


} 

Hier mein Fahrer ist:

public class Madlibsdriver 
{ 
    static Scanner scan= new Scanner (System.in); 
    public static void main(String[] args) 
    { 

     System.out.print ("Welcome to Mad libs!"); 
     System.out.println(); 
     System.out.println("-------------------------------------------- "); 
     System.out.println("Enter a noun:"); 
     String ip1= scan.nextLine(); 
     System.out.println("Enter an adjective:"); 
     String ip2= scan.nextLine(); 
     System.out.println ("Enter a verb:"); 
     String ip3= scan.nextLine(); 
     System.out.println ("Enter an adverb (ex: angrily) :"); 
     String ip4= scan.nextLine(); 
     System.out.println ("Enter another noun:"); 
     String ip5= scan.nextLine(); 

     Phrase obama= new Obama(ip1, ip2, ip3, ip4, ip5); 

     System.out.println(); 
     System.out.print (obama.toString()); 

    } 

} 

Antwort

2

Sie haben die Parameter in Ihrem Konstruktor getauscht, Sie haben die übergebenen Werte festgelegt (anstatt sie zum Festlegen Ihrer lokalen Felder zu verwenden). Verwenden Sie das Schlüsselwort this, um diese Fehlerklasse zu erfassen, z. B.

public Phrase (String n, String a, String v, String ad, String n2) 
{ 
    this.noun = n; 
    this.adjective = a; 
    this.verb = v; 
    this.adverb = ad; 
    this.noun2 = n2; 
} 
Verwandte Themen