Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    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

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

  2. #2
    Cosa c'è nei file o meglio come sono strutturati ?

    fatti il diagramma di flusso del programma e fatti dei piccoli passaggi.

    devi avere sott'occhio il contenuto dei file e come sono state caricate le matrici

    devi avere bene in mente il contenuto delle matrici

    Il resto viene da se !!!

  3. #3
    Hai fatto 3 discussioni uguali a questa!
    piuttosto fai up a questa, invece di aprirne altre!

    Ti consiglio di leggere le regole del forum!
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

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 © 2025 vBulletin Solutions, Inc. All rights reserved.