【问题标题】:I wanted to create a java Object by reading a text file我想通过读取文本文件来创建一个 java 对象
【发布时间】:2021-11-30 11:46:36
【问题描述】:

文本文件包含以下数据:

Rock
12
10
0

我想使用这些数据并将其作为属性添加到对象。 对象名称为播放器,属性为:

  • 姓名
  • maximum_health
  • current_health
  • no_of_wins

所以当对象被创建时,player.name 是"Rock",player.maximum_health 是12,player.current_health 是10,player.no_of_wins 是0。

【问题讨论】:

  • 好的...您对此信息有疑问吗?
  • 欢迎来到 Stack Overflow!请访问help中心,使用tour学习基础知识和How to Ask。做一些研究,搜索关于SO的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并注明输入和预期输出。

标签: java oop


【解决方案1】:

您可以使用正则表达式命名组来获取它们或使用空格分割

public static void main(String... args) {
    String text = "Rock 12 10 0";
    Pattern pattern = Pattern.compile("([a-zA-Z0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)");
    Matcher matcher = pattern.matcher(text);
    while (matcher.find()) {
        String name = matcher.group(1);
        String maximum_health = matcher.group(2);
        String current_health = matcher.group(3);
        String no_of_wins = matcher.group(4);
        Player player = new Player(name, maximum_health, current_health, no_of_wins);
    }
}

【讨论】:

  • 这里如何将最大生命值和当前生命值属性转换为双精度数据类型,以及如何将获胜次数转换为整数
  • 你可以使用 Double.parseDouble(maximum_health);转换为 double 和 Integer.parseInt(......) 从字符串转换为 int
  • 如果您确定最大和当前生命值是双倍的,请使用此模式([a-zA-Z0-9]+) ([0-9]+[.]?[0-9]+) ([0-9]+[.]?[0-9]+) ([0-9]+)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多