ho provato a migliorare il mio codice,però devo dirgli che deve partire dalla riga 0,fino ad arrivare a 7, e dalla colonna j-esima che corrisponde al giorno della settimana in cui inizia il mese fino a fine mese,ma non riesco a capire perchè appena nei cicli for metto istruzioni tipo: for(int j=gc.get(Calendar.DAY_OF_WEEK);j<COL;j++) mi sfalsa tutto...non capisco l'errore. vi posto il mio codice un pochino migliorato...mille grazie

import java.io.*;
import java.util.*;



public class StampaMese{

private static int RIG =5;
private static int COL =7;


public static void main(String[] args){
GregorianCalendar gc=new GregorianCalendar();
int anno=Keyboard.leggiInt("inserisci l'anno: ");
int mese=Keyboard.leggiInt("inserisci il mese: ");
int giorno=1;
System.out.println();

gc.set(Calendar.YEAR,anno);
gc.set(Calendar.MONTH,mese);
gc.set(Calendar.DAY_OF_MONTH,giorno);

//giorno della settimana in cui inizia il mese
int n=gc.get(Calendar.DAY_OF_WEEK);
System.out.println(n);

//vedo se l'anno è bisestile
boolean b=gc.isLeapYear(anno);
System.out.println(b);


String s="DOM LUN MAR MER GIO VEN SAB";
System.out.print(s.toString());

int[][] g=new int[RIG][COL];
int i=0;
int num=1;


//stampa
for(;i<RIG;i++){
System.out.println();
for(int j=0;j<COL;j++,num++){
g[i][j]=num;
if(num<=7) System.out.print(" "+num);
else System.out.print(" "+num);
System.out.print(" ");

}

}


}


}