在Main函数中调用toString方法

时间:2018-01-05 11:02:46

标签: java object tostring

我有3个不同的班级。我必须使用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());

提前致谢。

1 个答案:

答案 0 :(得分:0)

当您调用它的toString()方法时,不应该定义对象,尤其是当您使用Scanner从System.in读取数据时。相反,当您读取数据时,您应该使用数据来实例化Object。我还没有看到你班级的布局,但我觉得你并不完全理解what Objects are.

以下类定义用户;用户有一个名字,地址和HP。一旦掌握了这些信息,就可以创建一个新的用户对象,因为在这种情况下,拥有一个不代表已知用户的Object是没有意义的。

toString()方法已被覆盖,因此它生成一个代表Object描述内容的String - 您应该将此值调整为在将Object转换为String时Object的代表性。 Read more about the toString method and it's purpose.

static User userFromInput()方法可以满足您的需求。由于它是static,您可以在类上调用它,这意味着您不必实例化Object。此方法接受来自用户的输入(名称,地址和hp),实例化一个新的User对象并返回它。

 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;
    }
}

因此,您应该要求用户输入数据,然后使用以下内容将对象打印到控制台:

User user1 = User.userFromInput();
System.out.println(user1.toString());