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

    [java] tipo Minimatrix - exceptionnullpointer nel costruttore

    Salve,
    Ho creato un tipo di dato SquareReal Matrix e il ridotto MiniMatrix.
    Quando vado ad utilizzare mi da un errore alla riga dell'assegnamento del metodo
    costruttore... l'errore è un un puntatore nullo, ma non riesco a capire la motivazione
    ci cio

    il codice:

    codice:
    public class MiniMatrix{	
    	// indica il numero delle righe e delle colonne
    	protected Integer side;	
    	// matrice con elementi di tipo double
    	protected Double[][] matrixx;	
    	//costruttore
    	public MiniMatrix(Integer side,Double[][] matrix)
    	{
    	      Integer i,j;
    	      for(i=0;i<side;i++)
    	    	  for(j=0;j<side;j++)
    	    		  this.matrixx[i][j] = matrix[i][j];
    	}	
    	public void add(MiniMatrix matrix)
    	{
    		Integer i,j;
    		
    		for(i=0;i<this.side;i++)
               for(j=0;j<this.side;j++)
            	   this.matrixx[i][j]+= matrix.getelement(i, i);
    	}
    	public void print()
    	{
    		Integer i,j;
    		System.out.println("\n\n");
    		for(i=0;i<this.side;i++){
    			for(j=0;j<this.side;j++)
    				System.out.println(this.matrixx[i][j] +"  ");			
    			System.out.println("\n");}
    		System.out.println("\n\n");
    	}	
    	//
    	public Double getelement(Integer row, Integer col)
    	{
    		return this.matrixx[row][col];		
    	}		
    }
    Grazie!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Tralasciando lo spreco nell'utilizzate Integer e Double invece dei più indicati int e double, tu non definisci da nessuna parte matrixx. Ovvero la dichiari, ma non la inizializzi:

    Questa cosa di conseguenza
    codice:
    this.matrixx[i][j] = matrix[i][j];
    fallisce. Devi inizializzare matrixx da qualche parte prima di cominciare ad utilizzarla.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Quindi nel costruttore quando le assegno dei valori non va bene? se le assegno null va bene o poi mi da problemi in seguito?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    come stai messo a programmazione java in generale?

    Riassumo quello che fa quel codice:

    già sul protected ho qualche dubbio, ma non indago
    codice:
    protected Double[][] matrixx;
    Questo dice alla JVM: riservami in memoria uno spazio a cui accederò tramite il nome matrixx in cui ho intenzione di andare a salvare un array bidimensionale di Double, di cui ancora però non ho deciso le dimensioni

    codice:
    public MiniMatrix(Integer side,Double[][] matrix)
    	{
    	      Integer i,j;
    	      for(i=0;i<side;i++)
    	    	  for(j=0;j<side;j++)
    	    		  this.matrixx[i][j] = matrix[i][j];
    	}
    ed in particolare
    codice:
      this.matrixx[i][j] = matrix[i][j];
    dice prendi l'elemento [i][j] di matrixx ed assegnaci il valore dell'elemento [i][j] di matrix. Peccato però che tu sopra non abbia detto alla JVM com'è fatto matrixx: fin'ora gli hai solo detto "sarà un array bidimensionale di Double". Che abbia 100 x 100 elementi, 2 x 40 o quanti ne vuoi non è dato da sapere, ed anzi, per la JVM è proprio un bel null.

    Allora da qualche parte dovrai inizializzare sta benedetta matrixx

    per esempio:
    [CODE]
    codice:
    public MiniMatrix(Integer side,Double[][] matrix)
    	{
    // aggiunta
    matrixx = new Double[side][side];
    // fine aggiunta. Da questo momento, la JVM sa che cosa sia matrixx
    	      Integer i,j;
    	      for(i=0;i<side;i++)
    	    	  for(j=0;j<side;j++)
    	    		  this.matrixx[i][j] = matrix[i][j];
    	}
    Consiglio: usa un buon manuale, l'impressione e che tu stia programmando a caso.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.