発展課題 (r1:スプレッドシート)

注意点

このページは復習 (1)の発展課題を掲載しています。発展課題については「復習回の課題について」をよく読んでから取り掛かってください。

作業について

今回の課題は以下のパッケージに作成してください。

パッケージの名前
j1.review01

作成するクラスの名前は問題ごとに指示があります。下記を参照してください

課題の提出方法については下記を参照してください。

また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。

新しい内容

行の入れ替え

今回は2つの行を入れ替える方法について紹介します。

package j1.review01;

import gpjava.Spreadsheet;

public class SwapLineS1 {

    public static void main(String[] args) {
        new SwapLineS1().start();
    }

    void start() {
        Spreadsheet.show();
        Spreadsheet.setString(0, 0, "1行目");
        Spreadsheet.setString(1, 1, "2行目");
        Spreadsheet.setString(2, 2, "3行目");
        Spreadsheet.setString(3, 3, "4行目");

        Spreadsheet.waitForSelect("行を選択(1)");
        int first = Spreadsheet.getSelectedRow();
        Spreadsheet.waitForSelect("行を選択(2)");
        int second = Spreadsheet.getSelectedRow();

        Spreadsheet.swapLine(first, second);
    }
}

このプログラムは、2つのマスを選択して、それぞれのマスがある行の内容を入れ替えます。選択する前は、次のように斜めにそれぞれの文字列が並んでいます。

1行目        
  2行目      
    3行目    
      4行目  

ここから、「1行目」と書いたマスと「4行目」と書いたマスを続けてクリックすると、それぞれの行の内容が入れ替わります。

      4行目  
  2行目      
    3行目    
1行目        

このように、「Spreadsheet.swapLine」という命令で2つの行を入れ替えます。これは次のように書きます。

Spreadsheet.swapLine([1つ目の行番号], [2つ目の行番号]);

ほかの例として、2行目と3行目を続けてクリックすると、次のように入れ替わります。

1行目        
    3行目    
  2行目      
      4行目  

なお、同じ行を続けて2回クリックすると何も起こりません。

1行目        
  2行目      
    3行目    
      4行目  

今回の課題では、この「行を入れ替える」という命令を使ってプログラムを作成してもらいます。

問題

得点順に並び替えるプログラム

作成するクラスの名前
SortS1

scorer1-1.txtの内容をスプレッドシート上に読みだして、合計5人を成績が高い順に並び替えるプログラムを作成してください。ただし、同じ得点の人がいたらどちらを先にしても構いません。

scorer1-1.txtの内容は次のとおりです。

名前 得点      
Alice 0      
Bob 98      
Charley 75      
David 59      
Elvis 64      

これを読み出して並び替えると、次のようになります。

名前 得点      
Bob 98      
Charley 75      
Elvis 64      
David 59      
Alice 0      

プログラムが完成したら、同じプログラムで別のファイルscorer1-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルはそれぞれの得点が変わっているだけの内容です。

ヒント

まず最初に、5人の中で1番得点が高い人を2行目(最初の行)に移動してください。次に、残りの4人で1番得点が高い人を3行目(次の行)に移動してください。