来自输入的Java年龄近似值

来自输入的Java年龄近似值,java,queue,Java,Queue,我有一个按年龄划分优先顺序的问题 这些是需要处理的输入 Dude 20-25 Major Injuries Guy 48 Panic Bob <=4 会变成20人重伤 我只需要想法来处理它,不需要代码。要解析年龄,请使用String.contains逻辑: 要在解析年龄后存储数据,可以使用PriorityQueue PriorityQueue类提供了一个构造函数,您可以在其中指定自己的比较器来对队列中的元素进行排序。这是存储元素的最有效的方法,这将允许快速检索和索引 请参见您可以使用

我有一个按年龄划分优先顺序的问题

这些是需要处理的输入

Dude 20-25 Major Injuries
Guy 48 Panic 
Bob <=4 
会变成20人重伤

我只需要想法来处理它,不需要代码。

要解析年龄,请使用String.contains逻辑:

要在解析年龄后存储数据,可以使用PriorityQueue

PriorityQueue类提供了一个构造函数,您可以在其中指定自己的比较器来对队列中的元素进行排序。这是存储元素的最有效的方法,这将允许快速检索和索引


请参见

您可以使用正则表达式并用规则替换术语。以下是第一条规则的一个小示例:

String input = "Dude 20-25 Major Injuries";
Pattern pattern = Pattern.compile("([^\\d]*)([\\d]+)-([\\d]+)(.*)");
Matcher matcher = pattern.matcher(input);
matcher.matches();
String output = matcher.group(1) + matcher.group(2) + matcher.group(4);
System.out.println(input);
System.out.println(output);
输出:

Dude 20-25 Major Injuries
Dude 20 Major Injuries

我认为OP是在寻找如何解析输入,我假设这三个输入不是唯一可能的。使用此方法将导致需要约300条if语句才能使其足够通用。为什么-1?我做了编辑考虑其他年龄不> =,有人可能给你- 1,因为你的代码只处理确切的50。或者在15-20的情况下,你会得到20,它包含20,但它应该是15。这根本不是通用的解决方案。我相信我现在用正则表达式解决了这个问题。让我了解一下大家。这真的很有帮助,它让我知道了我应该使用正则表达式的概念,它附带了一个代码示例,一个正在运行的非运行时错误代码:。非常感谢你。
String input = "Dude 20-25 Major Injuries";
Pattern pattern = Pattern.compile("([^\\d]*)([\\d]+)-([\\d]+)(.*)");
Matcher matcher = pattern.matcher(input);
matcher.matches();
String output = matcher.group(1) + matcher.group(2) + matcher.group(4);
System.out.println(input);
System.out.println(output);
Dude 20-25 Major Injuries
Dude 20 Major Injuries