Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di xscc
    Registrato dal
    Jun 2009
    Messaggi
    8

    Strano errore condizione

    Ciao a tutti.
    Ho appena imparato giusto le basi di java per questo vi chiedo se potete gentilmente aiutarmi perchè non riesco a venire a capo di un problema.
    Se faccio una condizione di uguaglianza tra a1 (intero che rappresenta un anno, in questo caso 2006) e a2(uguale ad a1) mi restituisce sempre false.
    Vi metto una foto per farvi capire meglio.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    posta il codice, non si capisce niente. Poi ad occhio dove vedo date e robe tipo Integer.parseInt et similia, senza colpo ferire ti consiglio di andare a vedere come funziona Date, SimpleDateFormat, annessi e connessi...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Dallo screenshot non si capisce nulla... Puoi postare il codice?

    (visto che si parla di date... se devi lavorare con le date ti consiglio JodaTime)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di xscc
    Registrato dal
    Jun 2009
    Messaggi
    8
    Non posso usare il tipo Date (è un esercizio per scuola per farci comprendere come vengono gestite le date) quindi divido una stringa in 3 integer (giorno, meso, anno). Poi devo trovare quanti giorni intercorrono tra 2 date.

    Ecco il codice (getData1 e getData2 restituiscono la stringa presente in un JTextField) :
    codice:
    Integer vettMesi[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    	    @SuppressWarnings("deprecation")
    		public void controlloDate() {
            Integer data1[]={0,0,0};
            Integer a1,a2;
            Integer data2[]={0,0,0};
            Integer diffDate;
            String dataSplit[];
                if ((Date.parse(CreateGui.getData1())!=0) && (Date.parse(CreateGui.getData2())!=0)) {
                    dataSplit = CreateGui.getData1().split("/");
                    if (dataSplit.length == 3) {
                        data1[0] = Integer.parseInt(dataSplit[0]);
                        data1[1] = Integer.parseInt(dataSplit[1]);
                        data1[2] = Integer.parseInt(dataSplit[2]);
                        a1=data1[2];
                        dataSplit = CreateGui.getData2().split("/");
                        if (dataSplit.length == 3) {
                            data2[0] = Integer.parseInt(dataSplit[0]);
                            data2[1] = Integer.parseInt(dataSplit[1]);
                            data2[2] = Integer.parseInt(dataSplit[2]);
                            a2=data2[2];
                            if (a1 > a2) {
                                //minore
                                diffDate = (-1) * (calcolaDifferenza(data2, data1));
                            }
                            else if (a1 == a2) {
                                if (data1[1] > data2[1]) {
                                    //minore
                                    diffDate = (-1) * (calcolaDifferenza(data2, data1));
                                }
                                else if (data1[1] == data2[1]) {
                                    if (data1[0] > data2[0]) {
                                        //minore
                                        diffDate = (-1) * (data1[0] - data2[0]);
                                    }
                                    else if (data1[0] == data2[0]) {
                                        //uguale
                                        diffDate = 0;
                                    }
                                    
                                    else {
                                        //maggiore
                                        diffDate = data2[0] - data1[0];
                                    }
                                }
                                else {
                                    //maggiroe
                                    diffDate = calcolaDifferenza(data1, data2);
                                }
                            }
                            else {
                                //maggiore
                                diffDate = calcolaDifferenza(data1, data2);
                            }
                            JOptionPane.showMessageDialog(null, "Differenza date: " + Integer.toString(diffDate));
                        }
                        else {
                        	JOptionPane.showMessageDialog(null,"Separatore non valido");
                        }
                    }
                    else {
                    	JOptionPane.showMessageDialog(null,"Separatore non valido");
                    }
                }
                else {
                	JOptionPane.showMessageDialog(null,"Date inserite non valide");
                }
            }
    
        private Integer calcolaDifferenza(Integer dataInizio[], Integer dataFine[]) {
            Integer diffDate = 0;
            Integer a1,a2;
            diffDate += vettMesi[dataInizio[1] - 1] - dataInizio[0] + dataFine[0];
            dataInizio[1] += 1;
            if (dataInizio[1] > 12) {
                dataInizio[1] = 1;
                dataInizio[2] += 1;
            }
            if (((dataInizio[2] % 4 == 0) && ((dataInizio[2] % 100 != 0) || ((dataInizio[2]) % 400 == 0)))) {
                vettMesi[1] = 29;
            }
            a1=dataInizio[2];
            a2=dataFine[2];
            while (((dataInizio[1] != dataFine[1]) || ((a1-5) != (a2-5)))) {
                diffDate += vettMesi[dataInizio[1] - 1];
                dataInizio[1] += 1;
                if (dataInizio[1] > 12) {
                    dataInizio[1] = 1;
                    dataInizio[2] += 1;
                    if (((dataInizio[2] % 4 == 0) && ((dataInizio[2] % 100 != 0) || (dataInizio[2] % 400 == 0)))) {
                        vettMesi[1] = 29;
                    }
                    else if (vettMesi[1] != 28) {
                        vettMesi[1] = 28;
                    }
                a1=dataInizio[2];
                a2=dataFine[2];
                }
            }
            return diffDate;
        }

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    a1 e a2 sono oggetti di tipo Integer e tra oggetti l'operatore == verifica se i due operandi puntano alla stessa locazione di memoria.

    Nei casi < e > invece entra in gioco l'autounboxing.

    Facendo a1.equals(a2) al posto di == dovresti risolvere.

    Leggi qua per approfondire: http://stackoverflow.com/questions/9...lue-comparison
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di xscc
    Registrato dal
    Jun 2009
    Messaggi
    8
    Originariamente inviato da Alex'87
    a1 e a2 sono oggetti di tipo Integer e tra oggetti l'operatore == verifica se i due operandi puntano alla stessa locazione di memoria.

    Nei casi < e > invece entra in gioco l'autounboxing.

    Facendo a1.equals(a2) al posto di == dovresti risolvere.

    Leggi qua per approfondire: http://stackoverflow.com/questions/9...lue-comparison
    Grazie mille, sono riuscito a risolvere.
    Per la prossima volta devo ricordarmi di cercare meglio su google .
    Grazie.

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.