Saidai11.java を元に作ります。最大のものが1個でなく10個記録しておかなければなりません。記憶の方法と、上位10データをいかに選別するかでいろいろな方法があります。
// int[] max = new int[10]; などと作り、
// for を使って初期値を0にしておく
while ((line = inb.readLine()) != null) {
ct++;
data = Integer.parseInt(line);
for( int i=0; i<max.length; i++ ) {
if( data > max[i] ){
for( int j=max.length-1 ; j>i ; j-- ) {
max[j] = max[j-1];
}
max[i] = data;
break; //forの残りの部分はとばす
}
}
}
// int[] max = new int[11]; などと作り(一つ多い!!)、
int maxmax=10
// for を使って初期値を0にしておく
while ((line = inb.readLine()) != null) {
ct++;
data = Integer.parseInt(line);
for( int i=maxmax-1 ; i >= 0 ; i-- ) {
if( data >= max[i] ){
max[i+1] = max[i];
}
else {
max[i+1] = data;
break;
}
}
if (data > max[0]) {
max[0] = data;
}
}
int maxmax=10
// int[] max = new int[maxmax+1]; などと作り(一つ多い!!)、
// for を使って初期値を0にしておく
while ((line = inb.readLine()) != null) {
ct++;
data = Integer.parseInt(line);
i= maxmax-1;
while ( i >= 0 && data >= max[i] ) {
max[i+1] = max[i];
i--;
}
max[i+1] = data;
}
// int[] max = new int[11]; の代わりに、
// ArrayList<Integer> max = new ArrayList<Integer>();
// これは説明が必要だが、わかってしまえば易しい。
while ((line = inb.readLine()) != null) {
ct++;
data = Integer.parseInt(line);
i= 0;
while ( i < max.size() && data <= max.get(i) ) {
i++;
}
max.add(i, data);
}