born | died
1902 1991
1941 1978
2004
1957
1989 2008
1909 2005
1918
1913 2010
1979
1961 2002
1977 2003
1909 1991
我需要编写一个方法,获取上述信息并返回每年人口低于前一年的情况。
我是java初学者。有人可以帮助我如何实现这一目标吗?
public class Lifespan {
public static void main(String[] args) {
Lifespan lifespan = new Lifespan();
lifespan.computeLifeSpan();
}
public void computeLifeSpan() {
List<String> input = new ArrayList<String>();
Map<String,String> map = new HashMap<String,String>();
input.add("1902:1991");
input.add("1941:1978");
input.add("2004:");
List<LifeSpanModel> filteredInput = new ArrayList<LifeSpanModel>();
LifeSpanModel lifeSpanModel;
int population = 0;
for(String record:input) {
lifeSpanModel= new LifeSpanModel();
String earchRecord[] = record.split(":");
lifeSpanModel.setBornYear(earchRecord[0]);
lifeSpanModel.setDiedYear( earchRecord.length == 1 ? "Alive" : earchRecord[1]);
filteredInput.add(lifeSpanModel);
String k=map.get(lifeSpanModel.getBornYear());
if(map.get(lifeSpanModel.getBornYear())!= null) { // add alive person here
population = population + 1;
map.put(lifeSpanModel.getBornYear(), lifeSpanModel.getDiedYear());
}else {
map.put(lifeSpanModel.getBornYear(), lifeSpanModel.getDiedYear());
}
}
}
}
- 如果人口中的某一成员出生于某一年,他们将计入 那一年的人口。
- 同样,如果人口中的某一成员在某一年死亡,他们也将计入 那一年的人口。
- 死亡一栏为空表示还活着
对于该示例,正确的实现将返回以下年份:1992、2003、 2006、2009、2011。
最佳答案
每一行基本上都是一个人。您可以创建一个类,以便可以询问这个人是否还活着。
var person = new Person(1990, 2000);
person.wasAliveIn(1998);
那么这只是一个迭代多年来并计算任意给定年份有多少人活着的问题。
关于Java程序进行短路和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664797/