Java 在Main函数中调用toString方法
我有三门不同的课。我必须使用BufferedReader获得用户输入,但要使用toString方法。下面是我的User2类中的代码 如何在主函数调用用户在toString中输入的所有内容?如果我必须使用对象,如何使用Java 在Main函数中调用toString方法,java,object,tostring,Java,Object,Tostring,我有三门不同的课。我必须使用BufferedReader获得用户输入,但要使用toString方法。下面是我的User2类中的代码 如何在主函数调用用户在toString中输入的所有内容?如果我必须使用对象,如何使用 //in User2 class @Override public String toString() { try { //getting input using BufferedReader BufferedReader br = new
//in User2 class
@Override
public String toString() {
try {
//getting input using BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter customer name: ");
this.name = br.readLine();
System.out.print("Enter customer address: ");
this.address = br.readLine();
System.out.print("Enter customer contact no: ");
this.hp = br.readLine();
} catch (IOException e) {
return "";
}
return "" ;
}
我只知道使用
System.out.println(u2.toString());
提前感谢。调用对象的toString方法时,不应该定义对象,尤其是在使用扫描仪从System.in读取数据时。相反,当您读取数据时,您应该使用数据来实例化对象。我还没有看到你们的课程布局,但我感觉你们还不完全理解 下面的类定义了一个用户;用户有姓名、地址和hp。一旦有了这些信息,就可以创建一个新的用户对象,因为在这种情况下,拥有一个不代表已知用户的对象是没有意义的 toString方法已被重写,因此它会生成一个代表对象描述的字符串-当对象转换为字符串时,应根据您希望对象的代表性进行调整 静态用户userFromInput方法执行您想要的操作。实际上,您可以在类上调用它,这意味着您不必实例化对象。此方法从用户名、地址和hp获取输入,实例化一个新的用户对象并返回它
public class User {
private String name;
private String address;
private String hp;
public User (String name, String address, String hp) {
this.name = name;
this.address = address;
this.hp = hp;
}
@Override
public String toString() {
return name + " : " + address + " : " + hp;
}
public static User userFromInput() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
System.out.print("Enter customer name: ");
String name = br.readLine();
System.out.print("Enter customer address: ");
String address = br.readLine();
System.out.print("Enter customer contact no: ");
String hp = br.readLine();
return new User(name, address, hp);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
因此,您应该调用用户输入数据,然后使用以下to行将对象打印到控制台:
User user1 = User.userFromInput();
System.out.println(user1.toString());
在toString方法中读取标准输入是一个非常糟糕的主意。这甚至不是一个有用的toString方法:它总是返回。用另一种方法来解释这个逻辑,有什么解决办法吗@AndyTurner将此逻辑放在另一个方法中。理想情况下,toString应该生成代表对象的字符串。从系统中读取数据真的不应该这样做。我必须使用BufferedReader获取用户输入,但使用toString方法为什么要这样做?这是作业吗?如果是,我想你可能误解了说明。谢谢@zachary@SyamilFuad只需确保满足您的规格。还要确保关闭BufferedReader,我忘了放在那里。“试用资源”将为您处理此问题。