aiuto
chi mi da la mano con la spiegazione di questo programma è un calendario che inserendo la data da riga di comando mi da il giorno esatto es 14 luglio 1900 mi da che è lunedi mi servirebe la spiegazione qui c'è il codice
/////////////////////////////////////////////////////////////////////
import java.io.*;
import java.util.StringTokenizer;
public class Gregoriano
{
// Sezione pubblica
public Gregoriano() throws IOException
{
secolo = new String[29][5];
fileSecolo = new BufferedReader(new FileReader("Secolo.txt"));
anno = new String[29][4];
fileAnno = new BufferedReader(new FileReader("Anno.txt"));
mese = new String[7][7];
fileMese = new BufferedReader(new FileReader("Mese.txt"));
giorno = new String[7][7];
fileGiorno = new BufferedReader(new FileReader("Giorno.txt"));
setupSecolo();
setupAnno();
setupMese();
setupGiorno();
}
public String calcola(String giorno, String mese, String anno)
{
int i = 0, j = 0;
int ianno = 0, janno = 0;
boolean found = false;
String letteraSecolo = null;
int colonnaMese = 0;
int imese = 0;
String di = null;
// Cerco prima nella matrice anno la corrispondenza con le ultime 2 cifre
while (i < 29 && !found) {
while (j < 4 && ! found)
{
if (this.anno[i][j].equals(anno.substring(2,4))) {
ianno = i;
janno = j;
found = true;
}
j++;
}
j = 0;
i++;
}
// 1500 => 1^ colonna
if (anno.substring(0,2).equals("15"))
letteraSecolo = secolo[ianno][0];
// 1600 - 2000 => 2^ colonna
if (anno.substring(0,2).equals("16") || anno.substring(0,2).equals("20"))
letteraSecolo = secolo[ianno][1];
// 1700 - 2100 => 3^ colonna
if (anno.substring(0,2).equals("17") || anno.substring(0,2).equals("21"))
letteraSecolo = secolo[ianno][2];
// 1800 - 2200 => 4^ colonna
if (anno.substring(0,2).equals("18") || anno.substring(0,2).equals("22"))
letteraSecolo = secolo[ianno][3];
// 1900 - 2300 => 3^ colonna
if (anno.substring(0,2).equals("19") || anno.substring(0,2).equals("23"))
letteraSecolo = secolo[ianno][4];
// controllo per l'anno bisestile
if (letteraSecolo.length() == 2)
{
if (mese.equals("febbraio"))
letteraSecolo = letteraSecolo.substring(0,1);
else
letteraSecolo = letteraSecolo.substring(1,2);
}
// controllo il mese (passato come argomento)
if (mese.equals("gennaio") || mese.equals("ottobre"))
imese = 0;
if (mese.equals("febbraio") || mese.equals("marzo") || mese.equals("novembre"))
imese = 1;
if (mese.equals("aprile") || mese.equals("luglio"))
imese = 2;
if (mese.equals("maggio"))
imese = 3;
if (mese.equals("giugno"))
imese = 4;
if (mese.equals("agosto"))
imese = 5;
if (mese.equals("settembre") || mese.equals("dicembre"))
imese = 6;
// cerco nella matrice mese la lettera del secolo
j = 0;
found = false;
while (j < 7 && !found) {
if (this.mese[imese][j].equals(letteraSecolo))
{
found = true;
colonnaMese = j;
}
j++;
}
// calcolo il giorno
if (giorno.equals("1") || giorno.equals("8") || giorno.equals("15") ||
giorno.equals("22") || giorno.equals("29"))
di = this.giorno[0][colonnaMese];
else
if (giorno.equals("2") || giorno.equals("9") || giorno.equals("16") ||
giorno.equals("23") || giorno.equals("30"))
di = this.giorno[1][colonnaMese];
else
if (giorno.equals("3") || giorno.equals("10") || giorno.equals("17") ||
giorno.equals("24") || giorno.equals("31"))
di = this.giorno[2][colonnaMese];
else
if (giorno.equals("4") || giorno.equals("11") || giorno.equals("18") ||
giorno.equals("25"))
di = this.giorno[3][colonnaMese];
else
if (giorno.equals("5") || giorno.equals("12") || giorno.equals("19") ||
giorno.equals("26"))
di = this.giorno[4][colonnaMese];
else
if (giorno.equals("6") || giorno.equals("13") || giorno.equals("20") ||
giorno.equals("27"))
di = this.giorno[5][colonnaMese];
else
if (giorno.equals("7") || giorno.equals("14") || giorno.equals("21") ||
giorno.equals("28"))
di = this.giorno[6][colonnaMese];
return di;
}
// Sezione privata
// Inizializzo la matrice del secolo
private void setupSecolo() throws IOException
{
int i = 0, j = 0;
String line;
while ((line = fileSecolo.readLine()) != null)
{
StringTokenizer token = new StringTokenizer(line," ");
while (token.hasMoreTokens())
{
secolo[i][j++] = token.nextToken();
}
i++;
j = 0;
}
}
// Inizializzo la matrice dell'anno
private void setupAnno() throws IOException
{
int i = 0, j = 0;
String line;
while ((line = fileAnno.readLine()) != null)
{
StringTokenizer token = new StringTokenizer(line," ");
while (token.hasMoreTokens())
{
anno[i][j++] = token.nextToken();
}
i++;
j = 0;
}
}
// Inizializzo la matrice del mese
private void setupMese() throws IOException
{
int i = 0, j = 0;
String line;
while ((line = fileMese.readLine()) != null)
{
StringTokenizer token = new StringTokenizer(line," ");
while (token.hasMoreTokens())
{
mese[i][j++] = token.nextToken();
}
i++;
j = 0;
}
}
// Inizializzo la matrice del giorno
private void setupGiorno() throws IOException
{
int i = 0, j = 0;
String line;
while ((line = fileGiorno.readLine()) != null)
{
StringTokenizer token = new StringTokenizer(line," ");
while (token.hasMoreTokens())
{
giorno[i][j++] = token.nextToken();
}
i++;
j = 0;
}
}
private BufferedReader fileSecolo;
private BufferedReader fileAnno;
private BufferedReader fileMese;
private BufferedReader fileGiorno;
private String[][] secolo;
private String[][] anno;
private String[][] mese;
private String[][] giorno;
// main
public static void main(String args[]) throws IOException
{
Gregoriano cal = new Gregoriano();
if (args.length != 3) {
System.err.println("USO: java Gregoriano GIORNO MESE ANNO");
System.err.println("Esempio: java Gregoriano 15 aprile 1996");
System.exit(1);
}
//////////
nn so fare la spiegazione aiuto
System.out.println(cal.calcola(args[0],args[1],args[2]));
}
}