多次元配列の問題。

Q
実行例のようにクラス数、クラスごとの生徒数、生徒の名前と点数を入力させ。一覧する処理を作成せよ。

[実行例]

何組あるの>3
1組の生徒数を入力してください>3
1組の1番の名前を入力してください>山田
1組の1番の点数を入力してください>12
1組の2番の名前を入力してください>浅野
1組の2番の点数を入力してください>10
1組の3番の名前を入力してください>田中
1組の3番の点数を入力してください>15
2組の生徒数を入力してください>4
2組の1番の名前を入力してください>松下
2組の1番の点数を入力してください>15
2組の2番の名前を入力してください>阿部
2組の2番の点数を入力してください>12
2組の3番の名前を入力してください>大野
2組の3番の点数を入力してください>17
2組の4番の名前を入力してください>矢野
2組の4番の点数を入力してください>12
3組の生徒数を入力してください>2
3組の1番の名前を入力してください>上野
3組の1番の点数を入力してください>10
3組の2番の名前を入力してください>富岡
3組の2番の点数を入力してください>14
1組
  1番    山田    12
  2番    浅野    10
  3番    田中    15
2組
  1番    松下    15
  2番    阿部    12
  3番    大野    17
  4番    矢野    12
3組
  1番    上野    10
  2番    富岡    14

import java.util.Scanner;
class Q1{
	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		String[] cols={"名前","点数"};
		System.out.print("何クラス有りますか>");
		int cNum=s.nextInt();
		String[][][] data=new String[cNum][][];
		for(int i=0;i<data.length;i++){
			System.out.printf("%d組の生徒数を入力してください>",i+1);
			int sNum=s.nextInt();
			data[i]=new String[sNum][cols.length];
			for(int j=0;j<data[i].length;j++){
				for(int k=0;k<cols.length;k++){
					System.out.printf("%d組の%d番の%sを入力してください>", i+1,j+1,cols[k]);
					data[i][j][k]=s.next();
				}	
			}
		}
		for(int i=0;i<data.length;i++){
			System.out.printf("%d組%n",i+1);
			for(int j=0;j<data[i].length;j++){
				System.out.printf("%3d", j+1);
				for(int k=0;k<data[i][j].length;k++){
					System.out.printf("%3s",data[i][j][k]);
				}
				System.out.println();
			}
		}
	}
}