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
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); } System.out.println(cal.calcola(args[0],args[1],args[2])); } }

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
Rispondi quotando