所以我有一个问题,我的代码运行时(我刚刚开始昨天,所以请帮助)。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{firstName=java.io.BufferedInputStream@15db9742, lastName=java.io.BufferedInputStream@15db9742}?!
BUILD SUCCESSFUL (total time: 2 seconds)
System.in
不读取您的输入,因为它是标准输入的变量。这就是输出为java.io.BufferedInputStream@15db9742
的原因。
您必须使用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
。
当您没有为Friend
类覆盖toString()
方法时,您将在输出中得到另一个问题。因此,最好使用getter
方法作为变量,并将输出更改为:System.out.println("How are ya, " + friend.getFirstName + friend.getLastName() + "?!");