2016-08-15 2 views
0

Так что у меня проблема с моим кодом при запуске (я только что начал вчера, поэтому, пожалуйста, помогите). NetBeans не ждет ввода пользователя, поэтому он просто говорит что-то странное в выходе, рядом с моим текстом.Почему NetBeans не ждет ввода пользователем?

package javalol; 

/** 
* 
* @author sandy_000 
*/ 
public class JavaLol { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    String Printf="Please enter your first name:"; 
    String Printl="Please enter your last name:"; 
    System.out.println(Printf); 
    String firstName=System.in.toString(); 
    System.out.println(Printl); 
    String lastName=System.in.toString(); 
    Friend friend=new Friend(firstName, lastName); 
    System.out.println("How are ya, "+friend+"?!"); 
} 

} 

Выход:

Please enter your first name: 
Please enter your last name: 
How are ya, Friend{[email protected], [email protected]}?! 
BUILD SUCCESSFUL (total time: 2 seconds) 
+1

Вы не хотите называть 'System.in.toString()' (который вызывает 'PrintStream.toString()') нужен «Сканер» или «Читатель» и обернуть «System.in» для чтения. –

ответ

1

System.in не читает ввод, потому что это переменная для стандартного ввода. Вот почему выход [email protected].

Вы должны использовать Scanner, чтобы прочитать ввод (не забудьте импортировать для него java.util.Scanner).

Как это:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    String Printf="Please enter your first name:"; 
    String Printl="Please enter your last name:"; 
    System.out.println(Printf); 
    String firstName=scan.next(); 
    System.out.println(Printl); 
    String lastName=scan.next(); 
    Friend friend=new Friend(firstName, lastName); 
    System.out.println("How are ya, "+friend+"?!"); 
    scan.close(); 
} 

Для хорошего стиля кода, лучше писать printf и printl вместо Printf и Printl.

Если вы не перезаписали метод toString() для класса Friend, вы получите еще одну проблему в своем выходе. Так что лучше использовать методы getter для переменных и изменить свой результат на это: System.out.println("How are ya, " + friend.getFirstName + friend.getLastName() + "?!");

+0

Я попытался использовать Scanner в своем первом коде (проекте), и он вернул ошибку (я думаю, что я должен сделать еще один класс для Scanner, но я не знаю, как это сделать, и у меня нет нервов) , Кроме того, в этом проекте я попытался использовать 'System.in.read()', и он работал там. Является ли 'toString()' ядром моей проблемы? Кроме того, если это так, как мне сделать класс (я не имею в виду: «Как добавить файл в мой проект?», Я имею в виду: «Как узнать, какой код следует вводить в класс? он работает, как это должно быть? »)? Постскриптум Я новичок, так что легко с кодом (объясните функцию '.next()'). –

+0

Чтобы понять функцию '.next()', вы должны научиться читать [JavaDoc] (https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html). 'System.in.read()' не делает то, что вы ожидаете (см. [Здесь] (http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read())) – Blobonat

Смежные вопросы