Tralasciando il discorso sulle date che sicuramente non va gestito in questo modo, ma con le apposite classi Date, DateFormat, SimpleDateFormat, come vedi hai praticamente riscritto lo stesso codice per data 1 e data2. Allora va messo in un unico metodo.
Comunque il codice non funziona perchè tu ridefinisce Data data1 e Data2 all'interno dei metodi, mentre credo che il tuo scopo è quello di valorizzare le variabili globali data1 e data2 che a questo punto non saranno mai inizializzate e conterranno sempre 0 che è il valore col quale sono inizializzati gli interi.
Codice:
import javax.swing.JOptionPane;
public class Data {
static Data data1, data2;
int giorno, mese, anno;
public Data(int g, int m, int a) {
giorno = g;
mese = m;
anno = a;
}
public static void verificaDataUguale(Data data1, Data data2) {
if ((data1.giorno == data2.giorno) && (data1.mese == data2.mese) && (data1.anno == data2.anno))
System.out.println("Le date sono uguali");
else System.out.println("Le date sono diverse");
}
public static Data getData() {
int giorno = Integer.parseInt(JOptionPane.showInputDialog("Inserisci il giorno della data"));
int mese = Integer.parseInt(JOptionPane.showInputDialog("Inserisci il mese della data"));
int anno = Integer.parseInt(JOptionPane.showInputDialog("Inserisci l'anno della data"));
Data data = new Data(giorno, mese, anno);
return data;
}
public static void main(String[] args) {
data1 = getData();
data2 = getData();
verificaDataUguale(data1, data2);
System.exit(0);
}
}