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

    Errore hashMap

    codice:
    public class GestioneInfoMatrici {
    
    	    private int Righe;             
    	  //  private int infoMatrici[][];  
    	    private StringTokenizer st;
    	    private HashMap<String,Info>map;   
    	    private Info I;
    	    
            public GestioneInfoMatrici(int r) {
            st=null;   Righe=r;    map= new HashMap<String, Info>(r);    I=null;
            }	    
    	    
    	    public void PosizionaInHashMap(String r){
                      //DA RENDERE PIU EFFICIENTE
    	       st=new StringTokenizer(r," ");
               String K=st.nextToken();
               
    	           int nR=Integer.parseInt(st.nextToken());
    		       int nC=Integer.parseInt(st.nextToken());
                   I=new Info(nR, nC); 	 
                   map.put(K,I);
    // da cacciare......................................               
                    Info P= (Info) map.get(K);
                    System.out.println(P.getRiga()+"la prima hash map "+P.getCol());
    	    }
    	    
            public void StampaHashMap(){
                   System.out.println("Ecco le chiavi-->"+ map.keySet());     
            } 	    
    	    
            public HashMap getHashMap(){
            	return map;
            }
    	   
            public Info getInfoSuM(String  k){
            	Info C= (Info) map.get(k);
            	return C;
            }
            
            void InserInHashMap(String k,Info I){
            	//inserire nel caso non c'è la chiave altrimenti modificare il valore dell'oggetto Info
            	
            }
           	
    }
    //////////////////////////////////////////////////////////
    
    public class LeggiDaInput {
    	
        private  Info matrCalcolata;   
    	private  GestioneInfoMatrici G;
    	private int numM, numProd;
    	private  String riga;
    	private  Scanner in_Int=new Scanner(System.in);
    	private  Scanner in_Str=new Scanner(System.in);
    	private  StringTokenizer st;
    	private  String bloccoP;   // serve per il blocco di parentesi
    	private  String riga_2;
    	
    	private  Pattern patternR = Pattern.compile("([(]([A-Z0-9]+)+[)])");
    	private  Pattern patternP = Pattern.compile("°{1}[0-9]+°{1}|[A-Z]{1}");
     //Pattern patternI= Pattern.compile("([A-Z] ){1}([0-9] )+([0-9])+");
    	 
    	public LeggiDaInput() {
    	     numM=0; riga=""; st=null;  bloccoP=""; riga_2=""; //infoCalcolati=null;
    	      G=null;  
    	}
    	
    	public void AllocaHashMapEriempi()throws Exception{
    		System.out.println("IMMETTI IL NUMERO DI MATRICI CHE VERRANNO TRATTATE IN INPUT");
    		    numM=in_Int.nextInt();
    		   ///////////// if(numM)
            GestioneInfoMatrici G=new GestioneInfoMatrici(numM); 
           
            while(numM>0){
    			System.out.println("immetti riga nel formato  <Nome_matrice Riga Colonna>  : M R C");
       	             riga=in_Str.nextLine() ;
       	     //////////if
    		 G.PosizionaInHashMap(riga);// ogni riga è identificata da una kiave
                numM--;   
           }    
       }   
    	
    	
    	public void LeggiCalcolaEspr(){
    		  int kB=0;
    		do{
    		   System.out.println("inserisci riga");
    		   riga=in_Str.nextLine();	
    		     //generare eccezione in caso di immissione di numeri !!!
    		   Matcher matcher = patternR.matcher(riga); 
    		    while(riga.contains("(")){
    		    	    while(matcher.find()){
    				  	                  bloccoP=matcher.group();
    				  		                String chiave = ".".concat(String.valueOf(kB)).concat(".");
    				  		             
    				  		         if(VerificaEcalcoloBlocco(bloccoP,chiave))
    				  		            return ;
    
    				  		             kB++;
    				  		          riga_2=riga.replace(bloccoP, chiave);
    							  riga=riga_2;  
    			  	    }	
    			  	           matcher = patternR.matcher(riga);
    	        } 
    	   //qui viene memorizzato in qualche struttura dati il numProd 
           }while( ! riga.equals("STOP"));  	
        	
        	
        }//metodo
    	
        public  boolean VerificaEcalcoloBlocco(String Par,String k){
    		
    		 Matcher matcher_2 = patternP.matcher(Par); 
    		 boolean unaVolta=false;
    	System.out.println("inizio calcolo bloccooooooooo-----------------------------------------------------");       
    	        
    	         while(matcher_2.find()){                                                        
    	            String str= matcher_2.group();                                  
    	                                                                              
    	                 if(!unaVolta){
        	      Info I= G.getInfoSuM(str);  //<<<<<<<<<ERROREEEE-------------------------
    			    	        /* 
    			    	        matrCalcolata= new Info(I.getRiga(), I.getCol());
    			    	          System.out.println("righe   "+matrCalcolata.getRiga()  );
    			    	           System.out.println("colonne    "+matrCalcolata.getCol()  );*/
    					    	return true;
    		           }
    /*
    		            else{		    		
    		                   if(str.charAt(0)=='°')
    		                    	 k=str;
           		    	}
    		            System.out.println("-->"+ str);
    */
    		    }
          System.out.println("fine calcolo bloccooooooooo---------------------------------------------------------------");   
    	    		return true;
    	    		
      }//metodo
    	
    
    	public void StampaLetturaRighe(){
    		System.out.println("immetti riga nel formato <Nome_matrice Riga Colonna>  : M R C");
    	}
    
    /////////////////////////////////////////////////////////////////////
    
    
    public class AVVIO_mC {
    
    	    public static void main(String[] args) {
    	     		LeggiDaInput L=new LeggiDaInput();
    	     		boolean cicla=false;
    	  do{   		
    	     		try{
    	     			cicla=false;
    	                L.AllocaHashMapEriempi();
    	     		}catch (Exception e) {
    	      System.out.println("*******************************ATTENZIONE! INSERIRE CORRETTAMENTE I CAMPI*********************************!!!");
    			    	 cicla=true;
    	     		} 
    	  }while(cicla);  
    	     		
    	              L.LeggiCalcolaEspr();
    	
    	    
    	    }//m
    }
    Salve,mi ritrovo con un errore nullPointerException,nella classe LeggiDaInput nel metodo LeggiCalcolaEspr(); precisamente nella riga commentata con ERRORE ...servirebbe un aiutino ...

  2. #2
    Qual'è il problema? L'attributo G è null.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    si ma poi l'ho inizializzato nel metodo allocaHashMapEriempi() ,cmq Info I= G.getInfoSuM(str);
    questa riga mi solleva un NullPointerException

  4. #4
    Originariamente inviato da valeriAsus
    si ma poi l'ho inizializzato nel metodo allocaHashMapEriempi() ,cmq Info I= G.getInfoSuM(str);
    questa riga mi solleva un NullPointerException
    Il GestioneInfoMatrici G=new GestioneInfoMatrici(numM); che istanzi nel metodo AllocaHashMapEriempi() non è lo stesso che hai dichiarato nella classe LeggiDaInput private GestioneInfoMatrici G;
    Stai dichiarando un nuovo attributo G con visibilità limitata al metodo nel quale l'hai dichiarato.
    Devi sostituire la riga:

    codice:
    ...
    GestioneInfoMatrici G=new GestioneInfoMatrici(numM);
    ...
    con:

    codice:
    G=new GestioneInfoMatrici(numM);
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    ti ringrazio è proprio un errore da cretino... e mi ci stavo dannando grazie 1000

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.