2017-11-27 12 views
0

Ich bin neu in der Programmierung und ich möchte fragen, warum ist es so, dass ich in meinem Code keine Rückgabe-Funktion im Konstruktor und Methode verwenden muss?Warum wird in diesem Fall keine Rückgabe benötigt?

Auch warum ist das Alter nach der Verwendung der yearPasses Funktion um 3 und nicht um 1 erhöht?

Apologie für den langen Code

public class Person 
{ 
    private int age; 

    public Person(int initialAge) 
    { 
     // Add some more code to run some checks on initialAge 
     if (initialAge<0) 
     { 
      System.out.println("Age is not valid, setting age to 0."); 
      initialAge = 0; 
      age = initialAge; 
     } 
     else 
     { 
      age = initialAge; 
     } 
    } 

    public void amIOld() 
    { 
     if (age<13) 
     { 
      System.out.println("You are young."); 
     } 
     else if (age>=13 && age<18) 
     { 
      System.out.println("You are a teenager."); 
     } 
     else 
     { 
      System.out.println("You are old."); 
     } 
    } 

    public void yearPasses() 
    { 
     age = age + 1; 
    } 

    public static void main(String[] args) 
    { 
    Scanner sc = new Scanner(System.in); 
    int T = sc.nextInt(); 
    for (int i = 0; i < T; i++) 
    { 
     int age = sc.nextInt(); 
     Person p = new Person(age); 
     p.amIOld(); 
     for (int j = 0; j < 3; j++) 
     { 
      p.yearPasses(); 
     } 
     p.amIOld(); 
     System.out.println(); 
    } 
    sc.close(); 
} 

}

+1

Warum denken Sie, Sie brauchen eine Rückkehr? –

+0

1) Der Konstruktor initialisiert die Klasse, sie soll nichts zurückgeben. 2) Es gibt eine for-Schleife, die 'yearsPasses() '3 mal ausführt. – 0x499602D2

+2

Konstruktoren haben möglicherweise keinen Rückgabetyp, daher keine Rückgabe – StuartLC

Antwort

6

Sie brauchen keine return im Konstruktor, weil ein Job Konstruktor ist ein Objekt zu erstellen. Der Operator new gibt dieses Objekt für Sie zurück, sodass es nicht im Konstruktor selbst sein muss.

Ihre anderen Methoden sind mit einem Rückgabetyp von void deklariert, was bedeutet, dass sie nichts zurückgeben, so dass Sie keine return Anweisungen in denen entweder benötigen.

Sie rufen yearPasses in einer Schleife, die dreimal ausgeführt wird.

+0

Der Job des Konstruktors besteht nicht darin, ein Objekt zu erstellen. Seine Aufgabe besteht darin, das Objekt zu initialisieren. –

0

Konstruktoren erstellen das Objekt, das new Schlüsselwort ist, wo das Objekt zurückgegeben wird.

Alle anderen Methoden sind als void gekennzeichnet, was bedeutet, dass sie nichts zurückgeben.

Sie könnten eine Rückkehr zu Ihrer yearPasses Methode hinzufügen, die das neue Alter zurückgibt, wenn Sie wollen, aber es hängt davon ab, was Sie tun müssen. (Dies ist nur ein Beispiel für die Verwendung der Rückgabe)

Verwandte Themen