Java 在Main函数中调用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

我有三门不同的课。我必须使用BufferedReader获得用户输入,但要使用toString方法。下面是我的User2类中的代码

如何在主函数调用用户在toString中输入的所有内容?如果我必须使用对象,如何使用

//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,我忘了放在那里。“试用资源”将为您处理此问题。