【问题标题】:Make String input an object instance使 String 输入成为对象实例
【发布时间】:2019-05-28 14:47:15
【问题描述】:
user1.subscribe();

user1 在 User 类下,我正在研究如何使用 Scanner 获取用户输入。所以当使用 Scanner 询问用户名时,比如 user2,可以调用 user2.subscribe();

使用了扫描器字符串输入但无法转换为对象

User userID;
Scanner input = new Scanner(System.in);
userID = input.next();

类型不匹配:无法从 String 转换为 User

所以用户已经添加如下

User user1 = new User("user1", "James Smith", "915661829");

在 main 方法中,我可以调用 user1.subscribe() 来订阅用户。我正在尝试请求输入,例如“user2”,它将调用 user2.subscribe()。

扫描器会询问想要订阅的用户的用户名。

【问题讨论】:

  • “user1 在用户类下”是什么意思?无论如何,您的问题的解决方案最有可能使用映射作为 Map 您将字符串映射到用户实例。
  • 您将使用Scanner 收集信息。它可以读取Stringint等。收集相关信息后,您将使用正确的信息实例化一个UserUser (大概)不仅仅是一个用户名。

标签: java variables methods java.util.scanner instance


【解决方案1】:

扫描器的next() 方法确实只会产生字符串值。如果要创建一个新的 User 实例,则必须以某种方式手动将该 String 值转换为 User。

也许 User 有一个带有名字的构造函数?

String username = input.next();
User userID = new User(username);

【讨论】:

  • 用户已经创建。如果可能的话,我正在寻找如何将字符串转换为对象
  • 所以我假设你有某种Collection 的用户。您需要定义一种方法来搜索正确的用户,然后在找到用户时调用.subscribe
【解决方案2】:

您必须创建字段以接受来自命令行的输入。像这样的。

class User {
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                '}';
    }
}

然后在字段中接受输入,在填充之前需要实例化对象。

User userID = new User();
Scanner input = new Scanner(System.in);
userID.setId(input.next());
System.out.println("User object : " + userID);

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多