2016-04-29 4 views
0

Может кто-нибудь объяснить приведенный ниже код мне? Нелегко понять, как работает поток. Когда вызывающий конструктор животных вызывается в main(), он печатает «пожалуйста, введите имя», но как пользователь может здесь что-то вводить? И как он привязан к userInput? И наконец, почему мы используем this.setName (userInput.nextLine()) здесь?Нужна помощь по пониманию ввода пользователем в 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

Как указано ниже, код не будет компилироваться, но я предполагаю, что он работает в другом месте. Что касается понимания кода и того, что он делает, я предлагаю вам выполнить поиск Google для «java user input scanner». Нет смысла объяснять основные принципы для вас здесь, когда он хорошо документирован в другом месте. – Mumfi

+0

Привет, спасибо, что сообщили мне. Я прошел через входной документ сканера. Но я не понимаю, почему нам нужно использовать this.setName здесь. Я понимаю, что это относится к объекту, но почему мы используем this.setName вместо setName? – user3725988

+0

Вы можете удалить this.setName и установить его в setName. «Это» подразумевается и не нужно вводить. – Mumfi

ответ

1

При запуске программы, метод:

userInput.hasNextLine() 

будет блокировать до тех пор, тип пользователя что-то и нажмите не войти (КФ Javadoc).

Как только сделано, вы получите результат от:

userInput.nextLine()

Затем установите имя собаки с этим значением.

И наконец, он возвращает новый экземпляр животного с именем, введенным пользователем.

+0

большое спасибо. – user3725988

-1

Код имеет различные ошибки и не компилируется. Пользователь не сможет ничего вводить.

Редактировать: Первоначально код не компилировался. Обратитесь к приведенным выше ответам.

0

Скомпилирован. Вы определили метод setName перед конструктором , который в любом случае не повлияет на выполнение. в основном методе был создан экземпляр класса животных и при создании. был назван конструктор. И код в конструкторе запрашивает имя, Затем оператор if проверяет, что пользователь ввел что-либо через стандартный ввод . и передал значение методу setName , который, в свою очередь, присвоил значение для его имени.

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(); 
} 
} 
Смежные вопросы