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

    [Java] - Problema con return

    salve

    abbiamo un problema per il quale java ci viualizza questo messaggio:
    codice:
    Exception in thread "main" java.lang.NullPointerException
        at Verifica.data(Verifica.java:7)
        at InterfacciaAgenda.ins(InterfacciaAgenda.java:63)
        at ApplicazioneAgenda.main(ApplicazioneAgenda.java:45)
    ecco il codice ke chiama la classe verifica.data()
    codice:
     public void ins() throws IOException, ClassNotFoundException{
      	for (int i = 0; i < 9; i++) { //svuoto l'array
      		dati[i] = "";
      	}
        System.out.println("");
        System.out.println("Inserire i dati [Q per annullare]:");
    	System.out.println("");
            do {
    	    	System.out.println("Inserire correttamente Cognome e Nome o Nominativo *: ");
    	    	dati[0] = in.nextLine();
    	    if (dati[0].equalsIgnoreCase("Q")) {   //ad ogni inserimento di valori in input verifico se l'utente vuole annullare l'operazione
    	    		System.out.println("");
    	    		return;
    	    	}
    	   	    } while (dati[0] == null ||  dati[0].length() == 0 || dati[0].equals(" "));
    	    do {
    	    	System.out.println("Luogo di appuntamento: ");
    	    	dati[1] = in.nextLine();
    	    	if (dati[1].equalsIgnoreCase("Q")) {
    	    		System.out.println("");
    	    		return;
    	    	}
    	    } while (dati[1] == null);
    	   
    	   
    	    do{
    	    	System.out.println("Inserire la data nel seguemte formato (GG-MM-AAAA): ");
    	    	dati[2] = in.nextLine();
    	        if (dati[2].equalsIgnoreCase("Q")) {
    	    		 System.out.println("");
    	    		 return;
    	    	}
    	    	} while (dati[2].equals("") || (dati[2].length() != 10) || ! (dati[2].substring(2, 3).equals("-")) 
    				|| ! (dati[2].substring(5, 6).equals("-")) );
    				verifica.data();
    ecco il codice di verifica.data()
    codice:
    public class Verifica{
    
    public String data(){
    String giorni =(dati[2].substring(0,2)); 
     int giorno=(Integer.parseInt(giorni));
    if (giorno >31)
       { out.println("Giorno errato");
       return null;
       }
      String mesi = (dati[2].substring(4,5));
      int mese=(Integer.parseInt(mesi));
       if (mese >12)
       { out.println ("Mese errato");
       return null;
       }
     
     String anni =(dati[2].substring(7,10)); 
     int anno=(Integer.parseInt(anni));
    
    if (mese == 2)
        
      {
      if (anno%400 == 0  || (anno%4 == 0 && anno%100 != 0))
      {
          if (giorno > 29)
           {out.println("L'anno "+anno+" è bisestile,per cui il mese di febbraio ha massimo 29 giorni" );}
           else
      	
                {if (giorno > 28)
                   {out.println("Dato che "+anno+" non è bisestile, febbraio ha massimo 28 giorni" );}
               	}
       }
      }
      else
    {
    	
    	if (mese ==1 || mese ==3 || mese ==5 || mese ==7 || mese ==8 || mese ==10 || mese ==12)
    		{
    		if (giorno > 31){
    			out.println("Per il mese "+mese+ " il giorno è errato!!!");
    		}}
    	else
    	{
    	    if (giorno > 31){
    			out.println("Per il mese "+mese+ " il giorno è errato!!!");	
    	}
    }
    } return null;
     }
    aiuto!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ma guarda che ti dice dov'è l'errore..

    ApplicazioneAgenda.main(ApplicazioneAgenda.java:45 )
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Originariamente inviato da morphy79
    ma guarda che ti dice dov'è l'errore..

    ApplicazioneAgenda.main(ApplicazioneAgenda.java:45 )
    ApplicazioneAgenda.main(ApplicazioneAgenda.java:45 ) è proprio il primo codice ke ho inserito. il problema sussiste nel return null, del secondo codice ke ho inserito. e se invece del return null, inserisco solo return, java dà errore!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ma io non lo vedo il metodo main...
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    e poi scusa.. ma perchè non fai generare una tua eccezione dal metodoVerifica data ?
    è molto più elegante e comodo..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Originariamente inviato da morphy79
    ma io non lo vedo il metodo main...
    codice:
    class ApplicazioneAgenda {
    
      public static void main(String[] args) throws IOException, ClassNotFoundException{
      
    	//Attributi
    	  String selettori, select;
    	  Scanner in = new Scanner(System.in);
    	  InterfacciaAgenda interfaccia = new InterfacciaAgenda();
    	  
    	//Lettura del file
    	interfaccia.gestfile();
        //Menù principale da cui l'utente sceglie l'operazione da eseguire
        do {
    		System.out.println("MILLENNIUM 2008");
    		System.out.println("=================================");
        	System.out.println("");
        	System.out.println("~MENU'~");
    		System.out.println("");
    		System.out.println("I: INSERISCI APPUNTAMENTO");
    		System.out.println("M: MODIFICA APPUNTAMENTO");
    		System.out.println("C: CERCA APPUNTAMENTO");
    		System.out.println("E: ELENCA TUTTI GLI APPUNTAMENTI");
    		System.out.println("Q: ESCI");
    		System.out.println("=================================");
    		System.out.println("");
    	    do {
    	    	System.out.print("Inserire La lettera dell'operazione da eseguire: ");
    	    	selettori = in.nextLine();
    	    } while (!(selettori.equalsIgnoreCase("I"))  && !(selettori.equalsIgnoreCase("M"))  && !(selettori.equalsIgnoreCase("C"))
    	                && !(selettori.equalsIgnoreCase("E"))  && !(selettori.equalsIgnoreCase("Q")));
    	    System.out.println("");
    		if (selettori.equalsIgnoreCase("I")) {
    			System.out.println("");
    			System.out.println("*INSERISCI APPUNTAMENTO");
    			interfaccia.ins(); }
    	else if (selettori.equalsIgnoreCase("M")) {
    ..............
    hai ragione.
    in pratica qui c'è il main. il rigo 45 è interfaccia.ins(); } .
    questo chiama il primo codice ke ho inserito,ovvero interfacciaAgenda che contiene il metodo ins().

  7. #7
    Originariamente inviato da morphy79
    e poi scusa.. ma perchè non fai generare una tua eccezione dal metodoVerifica data ?
    è molto più elegante e comodo..
    :master: ad esempio?

  8. #8
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da likioti687
    :master: ad esempio?
    allora metti al tuo metodo la clasuola

    throws TuaClasseException

    poi fai una classe per gestire l'eccezione

    codice:
    public class TuaClasseException extends Exception {
    
      TuaClasseException(String descrizioneErrrore)
      {
        super(descrizioneErrrore);
      }
    }
    da adesso puoi, anzichè fare tornare null, far tornare un'eccezione con la clausola throws in ogni punto del tuo codice in cui ti accorgi che la data è errata....

    codice:
    throw new TuaClasseException("Stringa con descrizione errore rilevato");
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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.