Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Spiegazione programma

  1. #1

    Spiegazione programma

    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]));
    }
    }

  2. #2
    aprire discussioni identiche va contro le regole vigenti in questo forum (alias Crossposting)
    http://forum.html.it/forum/showthrea...hreadid=515768

    quindi questa la chiudo.
    ...Terrible warlords, good warlords, and an english song

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.