Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43

    Exception in thread "main" java.lang.NullPointerException at dieci.dieci(decimo.java

    qualcuno mi potrebbe dire cosa significa questo errore?
    codice:
    Exception in thread "main" java.lang.NullPointerException
    	at dieci.dieci(decimo.java:14)
    	at decimo.main(decimo.java:26)
    il codice è questo
    codice:
    class dieci{
    	public static String [][]dieci(String[][]a)
    	{       
    		String [][]b=new String[a.length][];
    		for (int i=0;i<a.length;i++)
    		{
    			for (int j=0;j<a[i].length;j++)
    			{
    				for (int k=0;k<a[i][j].length();k++)
    				{
    					if(a[i][j].charAt(k)!='x'||a[i][j].charAt(k)!='y')
    						b[i][j]+=a[i][j].charAt(k);
    				}
    			}
    			
    		}return b;
    	}
    }
    public class decimo{
    	public static void main (String args[]){
    		String [][]a={{"ciao","come","stxxai?"},
    		                    {"io","beyyne","e","tu?"},
    				    {"cosa","haxyi","fatto","pomexxyriggio","ay","lezxyxyione?"}};
    	String [][]b=dieci.dieci(a);
    	for (int i=0;i<b.length;i++)
    		{
    			for(int j=0;j<b[i].length;j++)
    			{
    				System.out.print(b[i][j]+"\t");
    			}
    			System.out.println("     ");
    		}
    	}
    }
    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Exception in thread "main"
    Un bel giorno la JVM stava eseguendo il main di un eseguibile java (in realtà non tanto eseguibile perchè c'era un brutto bug in agguato.. )

    java.lang.NullPointerException
    Eccolo il baco! la JVM si aspettava di trovare qualcosa di decente (un oggetto) per fare qualcosa (eseguire un metodo), ma invece di trovare un oggetto ha trovato un bel niente (null) e questo l'ha resa furente! Perchè si sa che con nulla non si fa nulla...

    at dieci.dieci(decimo.java:14)
    Qui c'è il responsabile NomeClasse.nomeMetodo(NomeFile: numeroRiga)

    at decimo.main(decimo.java:26)
    E qui ti dice che il main ha chiamato dieci() della classe dieci prima che ci fosse la NullPointerException

    Nota: NomeClasse => iniziale maiuscola! Sembra una stupidata.. sembra...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Nel caso specifico mi azzardo a dire che la matrice b non è stata creata in modo corretto.
    Infatti al momento dell'errore b[i] è un vettore di stringhe, ma b[i][j] è null.

    Morale: null + stringaNonNull = NullPointerException
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    ma il metodo l'ho dichiarato static,quindi non c'è bisogno di creare l'oggetto

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    ma il metodo l'ho dichiarato static,quindi non c'è bisogno di creare l'oggetto
    fidati...

    Se non mi credi fai una stampa:

    codice:
    class dieci{
    	public static String [][]dieci(String[][]a)
    	{       
    		String [][]b=new String[a.length][];
    		for (int i=0;i<a.length;i++)
    		{
    			// AGGIUNGI QUESTO:
    			System.out.println ("b["+i+"]: "+ b[i]);
    			for (int j=0;j<a[i].length;j++)
    			{
    				for (int k=0;k<a[i][j].length();k++)
    				{
    					if(a[i][j].charAt(k)!='x'||a[i][j].charAt(k)!='y')
    						b[i][j]+=a[i][j].charAt(k);
    				}
    			}
    			
    		}return b;
    	}
    }
    public class decimo{
    	public static void main (String args[]){
    		String [][]a={{"ciao","come","stxxai?"},
    		                    {"io","beyyne","e","tu?"},
    				    {"cosa","haxyi","fatto","pomexxyriggio","ay","lezxyxyione?"}};
    	String [][]b=dieci.dieci(a);
    	for (int i=0;i<b.length;i++)
    		{
    			for(int j=0;j<b[i].length;j++)
    			{
    				System.out.print(b[i][j]+"\t");
    			}
    			System.out.println("     ");
    		}
    	}
    }

    Infatti al momento dell'errore b[i] è un vettore di stringhe, ma b[i][j] è null.
    Mi correggo.. visto meglio il codice anche b[i] è null...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    e quindi come lo correggo?

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    String [][]b=new String[a.length][];
    Cosi crei un vettore di vettori di stringhe.
    Ciascun vettore di stringhe è ancora nullo.

    Quindi per ogni riga della matrice devi creare un vettore di stringhe:
    codice:
    for (int i=0; i<numRigheDiA; i++)
    {
      b[i] = new String [a[i].length];
      for (int j=0; j<b[i].length; j++)
      {
        b[i][j] = ""; // in questo modo b += diventa possibile
      }
    }
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    ok mi è riuscito 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.