Salve,mi ritrovo con un errore nullPointerException,nella classe LeggiDaInput nel metodo LeggiCalcolaEspr(); precisamente nella riga commentata con ERRORE ...servirebbe un aiutino ...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 }![]()

Rispondi quotando
