ciao
sto cercando di modificare una parte del codice di un esercizio di java e mi son imbattuto
in un dilemma sull uso degli oggetti :
ho dichiarato come variabili di istanza oggetti della classe Date , cioè di un altra classe ;codice:import java.util.Date ; import java.util.GregorianCalendar ; public class Main3 { private Date dataAppuntamentoInizio ; private Date dataAppuntamentoFine ; public Main3 () { GregorianCalendar chiama = new GregorianCalendar () ; chiama.set ( GregorianCalendar.DAY_OF_MONTH , GregorianCalendar.OCTOBER) ; chiama.set ( GregorianCalendar.HOUR_OF_DAY, 12 ) ; chiama.set ( GregorianCalendar.MINUTE, 20 ) ; chiama.set ( GregorianCalendar.SECOND, 10 ) ; chiama.set ( GregorianCalendar.YEAR, 2011 ) ; dataAppuntamentoInizio = chiama.getTime () ; dataAppuntamentoFine = chiama.getTime () ; }
quanto è lecita questa cosa?
ho inizializzato gli oggetti privati usando il GregorianCalendar , dichiarando il costruttore public
codice:public void setDuration (int minutiDurata) // dipende dall istanza oggetto inizioAppuntamento { // ho stabilito che la durata gli arriva in minuti GregorianCalendar chiama = new GregorianCalendar () ; chiama.setTime(dataAppuntamentoInizio) ; // carico il calendario con una data int oraInizio = chiama.get (GregorianCalendar.HOUR_OF_DAY); int minutoInizio = chiama.get (GregorianCalendar.MINUTE) ; int minutiTotali = minutiDurata + minutoInizio ; if ( minutiTotali <= 60 ) { chiama.setTime(dataAppuntamentoFine) ; // carico il calendario e edito chiama.set(GregorianCalendar.MINUTE , minutiTotali) ; } else { int oreDiDurata = minutiTotali / 60 ; int minutiFinali = ( minutiTotali % 60 ) + minutoInizio; int oraFinale = oraInizio + oreDiDurata ; chiama.setTime(dataAppuntamentoFine) ; // carico il calendario e edito chiama.set(GregorianCalendar.HOUR , oraFinale ) ; chiama.set (GregorianCalendar.MINUTE, minutiFinali) ; } } public int getDuration () { long msIniziali = dataAppuntamentoInizio.getTime () ; long msFinali = dataAppuntamentoFine.getTime () ; GregorianCalendar chiama2 = new GregorianCalendar () ; chiama2.setTime(dataAppuntamentoFine) ; // carico il calendario con una data int oraInizio = chiama2.get (GregorianCalendar.MINUTE); System.out.printf("\n%d", oraInizio); long msTotali = msFinali - msIniziali ; long minutiTotali = ( msTotali / 1000 ) / 60 ; return (int) minutiTotali ; }
il problema è nel metodo setDuration ;
quando esco dal metodo il valore dell'oggetto dataAppuntamentoFine è lo stesso dell'altro oggetto , dataAppuntamentoInizio !
com'è possibile tutto ciò?
quando invoco il metodo getDuration dal main mi restituisce un valore in minuti che non è
lecito ( sempre 0 )
che cosa posso e non posso fare utilizzando un metodo di una classe e cercando di modificare un oggetto di un altra classe?
qualcuno sa dove sbaglio?
Grazie

Rispondi quotando