これは私が Java で書いたコードです。itr はキーの反復子です。キーの反復処理で問題に直面しています。コードの問題は次のとおりです。2n 整数の配列が与えられ、この配列の各ペアは整数は、それぞれ恐竜の誕生年と死亡年を表します。考慮したい有効な年の範囲は [-100000 から 2005] です。たとえば、入力が次の場合:
-80000 -79950 20 70 22 60 58 65 1950 2004
これは、最初の恐竜の誕生年が -80000 年で、死亡年が -79950 年であることを意味します。同様に、2 番目の恐竜は 20 歳から 70 歳まで生きました。
一度に生きていた恐竜の最大数を知りたい. 上記の 2n 整数の配列が与えられた場合に、これを計算するメソッドを作成します。
次のいずれかのメソッドを記述します。
C/C++: int find_max_dinosaur (int[] 年);
Java: public int findMaxdinosaur (int[] 年);
package usingarray;
int dinoStrength;
int deathOfDino;
int dinoBirthAge;
int currentDinoBirthAge;
int currentDinoDeathAge;
int count;
TreeMap dino=new TreeMap();
List<Integer> dinos = new ArrayList<Integer>();
Scanner sc=new Scanner(System.in);
public void getDionoAges()
{
System.out.println("How many Dinosaur");
dinoStrength=sc.nextInt()+1;
for(int i=1;i<dinoStrength;i++)
{
System.out.println("Please enter "+i+" dino birth age and death age:");
dino.put(sc.nextInt(),sc.nextInt());
}
}
public void logic()
{
Collection value = dino.values();
Collection key = dino.values();
Iterator it = value.iterator();
Iterator itr = key.iterator();
System.out.println("logic");
for(int x=0;x<dinoStrength;x++)
{
System.out.println("in for");
while(it.hasNext() && itr.hasNext())
{
System.out.println("in while");
deathOfDino=(int) it.next();
//currentDinoDeathAge=(int) it.next();
dinoBirthAge=(int) itr.next();
while(itr.hasNext())
{
System.out.println("In itr while");
currentDinoBirthAge=(int) itr.next();
if(dinoBirthAge<=currentDinoBirthAge && currentDinoBirthAge<=deathOfDino)
{
count++;
System.out.println(count);
}
}
dinos.add(count);
}
}
}
public void display()
{
Iterator<Integer> it = dinos.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
public static void main(String[] args) {
VickyDino vd=new VickyDino();
vd.getDionoAges();
vd.logic();
vd.display();
}
}