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); }