2016-04-29 11 views
0

Kann mir jemand den folgenden Code erklären? Es fällt mir schwer zu verstehen, wie der Flow funktioniert. Wenn der Tier-Konstruktor in main() aufgerufen wird, wird "bitte Name eingeben" ausgedruckt, aber wie kann der Benutzer hier etwas eingeben? Und wie wird es dem userInput zugewiesen? Schließlich, warum verwenden wir this.setName (userInput.nextLine()) hier?Benötigen Sie Hilfe zum Verständnis der Benutzereingabe in Java?

import java.util.Scanner; 
import java.util.*; 

    public class animal{ 

    private String name; 
    static Scanner userInput = new Scanner(System.in); 


    public void setName(String name){ 
     this.name = name; 
    } 


    public animal(){ 
    System.out.println("please input the name"); 
    if(userInput.hasNextLine()){ 

     this.setName(userInput.nextLine()); 
    } 

    } 


    public static void main(String[] args){ 

     animal Dog1 = new animal(); 
    } 
    } 
+0

Wie unten beantwortet, wird der Code nicht kompilieren, aber ich nehme an, Sie haben es funktioniert woanders. Was das Verständnis des Codes und seiner Funktionsweise angeht, schlage ich vor, dass Sie eine Google-Suche nach "Java-Benutzereingabe-Scanner" durchführen. Es hat keinen Sinn, Ihnen hier die Grundlagen zu erklären, wenn es an anderer Stelle gut dokumentiert ist. – Mumfi

+0

Hallo, danke, dass du mich informiert hast. Ich habe das Eingabescanner-Dokument durchsucht. Aber ich verstehe nicht, warum wir das hier verwenden müssen. Ich verstehe, dass dies sich auf das Objekt bezieht, aber warum verwenden wir this.setName anstatt nur setName? – user3725988

+0

Sie können this.setName entfernen und auf setName festlegen. Das "Dies" ist impliziert und muss nicht abgetippt werden. – Mumfi

Antwort

1

Wenn Sie Ihr Programm ausführen, wobei das Verfahren:

userInput.hasNextLine() 

blockiert, bis der Benutzer Art etwas aus und drücken (siehe javadoc) eingeben.

das erledigt ist, erhalten Sie das Ergebnis aus:

userInput.nextLine()

Stellen Sie dann den Namen des Hundes mit diesem Wert.

Schließlich gibt es die neue Tierinstanz mit dem vom Benutzer eingegebenen Namen zurück.

+0

vielen Dank. – user3725988

-1

Der Code hat verschiedene Fehler und kompiliert nicht. Der Benutzer kann nichts eingeben.

edit: Ursprünglich wurde der Code nicht kompiliert. Siehe obige Antworten.

0

Es kompiliert. Sie haben vor dem Konstruktor eine Methode setName definiert, die die Ausführung trotzdem nicht beeinflusst. in der Hauptmethode wurde eine Instanz der Klasse Tier erstellt und erstellt. der Konstrukteur wurde gerufen. Und der Code im Konstruktor wurde nach dem Namen gefragt, Dann überprüft die if-Anweisung, ob der Benutzer irgendetwas über die Standardeingabe eingegeben hat. und den Wert an die Methode setName übergeben, die wiederum den Wert name zugewiesen hat.

import java.util.Scanner; 
import java.util.*; 

public class animal{ 

private String name; 
static Scanner userInput = new Scanner(System.in); 


public void setName(String name){ 
    this.name = name; 
} 


public animal(){ 
System.out.println("please input the name"); 
if(userInput.hasNextLine()){ 

    this.setName(userInput.nextLine()); 
} 

System.out.println("The name of the animal is: " + name); 

} 


public static void main(String[] args){ 

    animal Dog1 = new animal(); 
} 
} 
Verwandte Themen