Shuukei.java



/** 試験の成績の処理を行うクラス */
public class Shuukei {

  /** 処理される成績のデータ */
    public Score[] data;

  /** ソート処理後の成績のデータ */
    public Score[] sortedData;


  /** 配列のコピーを実行するメソッド */
    private Score[] copyScore( Score[] orig ) {

        Score[] copy = new Score[orig.length];
        for( int i=0; i<orig.length; i++ )
            copy[i]=orig[i];
        return copy;
    }

  /** 与えられた Score配列を点数でソート */
    public void sort( Score[] data ) {

        Score tmp;
        for( int i=0; i<data.length-1; i++ ) {
            for( int j=0; j<data.length-i-1; j++ ) {
                if( data[j].point < data[j+1].point ) {
                     tmp = data[j];
                     data[j] = data[j+1];
                     data[j+1] = tmp;
                }
            }
        }
    }

  /** 与えられた Score配列を表示 */
    private void printScore( Score[] data ) {

        for( int i=0; i<data.length; i++ ) {
             System.out.println( data[i].toString() );
        }
        System.out.println( "--------------------------------" );
    }

  /** 与えられた Score配列から指定された個数のデータを返す */
    public Score[] head( Score[] data, int num ) {

        Score[] head = new Score[num];
        for( int i=0; i<num; i++ ) {
             head[i]=data[i];
        }
        return head;
    }

  /** 与えられた Score配列から指定された個数のデータを返す */
    public Score[] tail( Score[] data, int num ) {

        Score[] tail = new Score[num];
        for( int i=0; i<num; i++ ) {
             tail[i]=data[data.length-num+i];
        }
        return tail;
    }

  /** main()メソッド(実験用) */
    public static void main( String[] argv ) {

        Shuukei s = new Shuukei();
        s.data = MakeRandomData.getData( 100 );
        s.sortedData = s.copyScore( s.data );
        s.sort( s.sortedData );
        Score[] h = s.head( s.sortedData, 5 );
        s.printScore( h );
        Score[] t = s.tail( s.sortedData, 5 );
        s.printScore( t );
        Graph g = new Graph( s.data );
        g.printGraph();
    }
}