来自输入的Java年龄近似

时间:2014-03-12 14:27:00

标签: java queue

我有关于按年龄划分优先次序的问题

这些是需要处理的输入

Dude 20-25 Major Injuries
Guy 48 Panic 
Bob <=4 

我必须优先考虑受害者年龄(年轻人到年长者)必须得救的人 你可以看到受害者姓名后面的数字是年龄

所以如果它是20-25的范围,它将被视为20

  • 如果是&lt; = 4,则将其视为4
  • 如果<4,则将其视为3
  • 如果> 4,则将其视为5

我的问题是,处理每一行的最佳方法是什么,这样我才能从年龄中获得所考虑的价值 我需要将它存储在像数组或arrayList中的某个地方 如果它是:

Dude 20-25 Major Injuries

它将改为Dude 20 Major Injuries

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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

String input = "Bob 20-25";
Pattern pattern = 
Pattern.compile("[[(<=?)(>=?)]?[0-9]{1, 2}([0-9]{1,2} - [0-9]{1, 2})]");

Matcher matcher = 
pattern.matcher(input);

String regex = matcher.group();
int age = Integer.parseInt(regex);
if (regex.contains("=") {};
else if (regex.contains("<") {
  age = age - 1;
else if (regex.contains(">") {
  age = age + 1;
}
else {}

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

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

请参阅JavaDocs