パソコン甲子園

9月6日に行われるパソコン甲子園プログラミング部門にエントリーするため過去問を解いています。
今回解いた問題は以下の通り。

体育祭

秋の体育祭が行われます。種目は徒競走、ボール運び、障害物競走、リレーの4種目です。参加チームはnチームで、この4種目の合計タイムが最も小さいチームが「優勝」、次に小さいチームが「準優勝」、そして、最下位より2番目のチームを「ブービー賞」として表彰したいと思います。
各チームの成績を入力として、「優勝」、「準優勝」、「ブービー賞」のチームを出力するプログラムを作成してください。
ただし、各チームには1以上1000000以下のチーム番号が与えられており、チーム数は4以上1000000以下、タイムを表す分と秒はともに0以上59以下の整数とします。また、合計タイムが複数のチームで同じになるような入力はないものとします。

プログラムは以下に定義する入力が続く限り処理を繰り返し、入力が終わったら終了するように作成してください。


入力

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下のとおりです。
1行目 対象となるチームの数n(整数)
2行目 第1のチームの情報 c1 m1 s1 m2 s2 m3 s3 m4 s4(整数 整数 …;半角空白区切り)
         各記号の意味は以下の通りです。
          c1  :チーム番号
          m1, s1:それぞれ徒競走のタイムの分と秒
          m2, s2:それぞれボール運びのタイムの分と秒
          m3, s3:それぞれ障害物競走のタイムの分と秒
          m4, s4:それぞれリレーのタイムの分と秒
3行目 第2のチームの情報
       :
       :
n+1行目 第nのチームの情報


出力

入力データセットごとに以下の形式で出力します。

1行目 優勝のチーム番号(整数)
2行目 準優勝のチーム番号(整数)
3行目 ブービー賞のチーム番号(整数)


以下、書いたプログラム。


import java.util.Scanner;

class T10{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int n;
while( (n = scan.nextInt()) != 0){
Team[] teams = new Team[n];

for(int i=0; i teams[j+1].total){
Team temp = teams[j];
teams[j] = teams[j+1];
teams[j+1] = temp;
}else{
break;
}
}
}
System.out.println(teams[0].num);
System.out.println(teams[1].num);
System.out.println(teams[n-2].num);
}
}
class Team{
int num;
int total = 0;

public Team(int c){
num = c;
}
public static int sum(int t1, int t2, int t3, int t4){
int total = 0;
return total = t1+t2+t3+t4;
}
}

今まではTeamクラスのインスタンスにチーム番号を示す変数numを設定する際、teams[i].num = scan.nextInt()と書いていたのですが、今回はインスタンス生成時にコンストラクタを用いてチーム番号を設定してみました。
プログラムとしてどっちが美しいのかはよく分からないのですが・・・。

あと、いちばん最初の for(int i=0; i と表示されるのはなぜでしょうか。
はてなの性質みたいなもの?