Java 我猜我是以错误的方式迭代密钥(itr)?
这是我用Java写的代码,itr是密钥的迭代器,我在迭代密钥时遇到了一个问题,代码的问题是:我们得到了一个2n个整数的数组,其中这个整数数组中的每一对分别代表恐龙的出生年份和死亡年份。我们要考虑的有效年限范围是[-100000到2005 ]。例如,如果输入为: -80000-79950 20 70 22 60 58 65 1950 2004 这意味着第一只恐龙的出生年份分别为-80000和-79950。同样地,第二只恐龙生活在20到70岁之间,依此类推 我们想知道在同一时期活下来的恐龙数量最多。给出上面2n个整数的数组,写一个方法来计算它 编写以下方法之一: C/C++: 发现恐龙(整数[]年) 爪哇: 公共int FindMax恐龙(int[]年)Java 我猜我是以错误的方式迭代密钥(itr)?,java,collections,Java,Collections,这是我用Java写的代码,itr是密钥的迭代器,我在迭代密钥时遇到了一个问题,代码的问题是:我们得到了一个2n个整数的数组,其中这个整数数组中的每一对分别代表恐龙的出生年份和死亡年份。我们要考虑的有效年限范围是[-100000到2005 ]。例如,如果输入为: -80000-79950 20 70 22 60 58 65 1950 2004 这意味着第一只恐龙的出生年份分别为-80000和-79950。同样地,第二只恐龙生活在20到70岁之间,依此类推 我们想知道在同一时期活下来的恐龙数量最多。
使用阵列的包;
内特迪诺斯特朗;
迪阿霍夫迪诺国际酒店;
int-dinoBirthAge;
int-currentDinoBirthAge;
国际货币基金组织;
整数计数;
TreeMap dino=新的TreeMap();
List dinos=new ArrayList();
扫描仪sc=新的扫描仪(System.in);
公共无效getDionoAges()
{
System.out.println(“多少只恐龙”);
dinoStrength=sc.nextInt()+1;
对于(int i=1;i我假设您的问题是:
Collection value = dino.values();
Collection key = dino.values();
您使用了两次dino.values()
;第二次可能是dino.keys()
。但是,由于您将出生年份放入键中,将死亡年份放入值中,因此可能需要切换这两个值。注意:我没有检查循环中的逻辑是否正确。我假设您的问题是:
Collection value = dino.values();
Collection key = dino.values();
您正在使用dino.values()
两次;第二次可能应该是dino.keys()
。但是,由于您将出生年份放入键中,将死亡年份放入值中,您可能需要切换这两个值。注意:我没有检查循环中的逻辑是否正确。/*
问题:我们给出了一个2n个整数的数组,其中整数中的每一对分别代表恐龙的出生年份和死亡年。我们希望……的死亡年的范围分别是……我们要考虑的有效年的范围是[-100000到2005 ]。
*/
公共int FindMax恐龙(int[]年){
int[]birthDino=newint[years.length];
整数[]死亡数=新整数[年长];
//现在,出生和死亡名单中的死亡包含甚至地方。
对于(int i=0;i/*
问题:我们给出了一个2n个整数的数组,其中整数中的每一对分别代表恐龙的出生年份和死亡年。我们希望……的死亡年的范围分别是……我们要考虑的有效年的范围是[-100000到2005 ]。
*/
公共int FindMax恐龙(int[]年){
int[]birthDino=newint[years.length];
整数[]死亡数=新整数[年长];
//现在,出生和死亡名单中的死亡包含甚至地方。
对于(inti=0;我会回答一点,但我现在可以说:热爱恐龙。你能尝试像这样迭代吗()?我认为同时按值和键迭代是不合适的。另外,这两个集合(值和键)不必按相同的顺序。键将按自然顺序排列。我稍后会回答,但我现在可以说:热爱恐龙。你可以尝试这样迭代吗()?我认为同时按值和键进行迭代是不合适的。另外,这两个集合(值和键)不必按相同的顺序。键将按自然顺序排列。感谢最后一次但仍获得CurrentDinBirtShage=0(第59行)感谢最后一次但仍获得CurrentDinBirtShage=0(第59行)
int[] birthDino = new int[years.length];
int[] deathDino=new int[years.length];
//Now birth & death list is made in which death contains even place.
for(int i=0;i<=years.length-2;i=i+2){
birthDino[i]=years[i];
deathDino[i+1]=years[i+1];
}
Arrays.sort(birthDino);
Arrays.sort(deathDino);
List<Integer> al=new ArrayList<Integer>();//List is need because i need to remove null values from here
for(int aa: birthDino){
al.add(aa);
}
al.removeAll(Collections.singleton(0));// Removing all positions which contain null values
// System.out.println(al);
List<Integer> all=new ArrayList<Integer>();
for(int aa: deathDino){
all.add(aa); //adding in to the List
}
all.removeAll(Collections.singleton(0));
int Alive=0,maxDinos=0,LastBornMax=0;
int b = 0,d=0;
while( b!=birthDino.length && d!=deathDino.length) {
if (birthDino[b] < deathDino[d]) {
Alive = Alive + 1;
b = b + 1;
}
else {
Alive = Alive - 1;
d = d + 1 ;
}
if(maxDinos < Alive){ //checking the values
maxDinos = Alive;
LastBornMax=birthDino[b-1];
}
}//while end
//S N Prasad Rao.
return maxDinos;
}//end of method