problemi con arrayList in java

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

problemi con arrayList in java

Messaggio da tonyven »

Ciao a tutti. Ho un problema con un'arrayList. Ho una classe principale con all'interno diverse classi inner.Devo richiamare un array list della classe principale in alcune classi inner. Come faccio? Non dovrebbe gia' essere visibile a tutte le classi inner? Grazie per l'eventuale risposta.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: problemi con arrayList in java

Messaggio da Zoff »

Codice: Seleziona tutto

NomeClassePrincipale.this.nomeArraylist
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

Re: problemi con arrayList in java

Messaggio da tonyven »

Niente da fare. Mi lancia un'eccezione NullPointer. Per comodità posto il codice

Codice: Seleziona tutto

import javax.swing.*;

import java.awt.*;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.*;
import java.io.*;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.*;
import java.lang.*;


public class RubricadaConsolle1 {
	
	private ArrayList contatti;
	public RubricadaConsolle1(){
			
			
			
			
			//RubricadaConsolle1 x=new RubricadaConsolle1();
		    //RubricadaConsolle1.Menu menu=x.new Menu();
			
		//String nome=a.getNome();
		//String cognome=a.getCognome();
		//String telefono=a.getTelefono();
		//String email=a.getEmail();
		
	   //contatti.add(new Contatto(nome,cognome,telefono,email));
		}
	
	 
	


		
			
				/*try
				{
					Runtime.getRuntime().exec("notepad Rubrica.txt");
				}catch (Exception f) {
						System.out.println ("Errore exec:" + f);
				}*/
	


	public static void main(String[] args){
		RubricadaConsolle1 x=new RubricadaConsolle1();
		RubricadaConsolle1.Menu menu1=x.new Menu();
		for (; ;){
		Scanner input=new Scanner(System.in);
		String s=input.nextLine();
		//System.out.println(s);
		
		switch(s){
		case "1":
			
			RubricadaConsolle1 z=new RubricadaConsolle1(); 
			RubricadaConsolle1.InserisciContatto a= z.new InserisciContatto();
			a.inserisci();
			break;
		case "4":
			RubricadaConsolle1 w=new RubricadaConsolle1();
			RubricadaConsolle1.LeggidaFile leggi=w.new LeggidaFile();
			leggi.leggiFile();
			break;
		
		case "6":
			//Scanner binput=new Scanner(System.in);
			//String s4=binput.nextLine();
			RubricadaConsolle1 v=new RubricadaConsolle1();
			RubricadaConsolle1.Salva salva=v.new Salva();
			salva.salvacontatto();
			
			//RubricadaConsolle1 x1=new RubricadaConsolle1();
			//RubricadaConsolle1.Menu menu1=x1.new Menu();
			
			break;
		}
		
		}
		
		
			
		 }
	
	public class Contatto{
		
		 private String nome,cognome,email,telefono;
		    public Contatto(String nome,String cognome,String telefono,String email)
		    {
		        this.nome = nome;
		        this.cognome = cognome;
		        this.telefono = telefono;
		        this.email = email;
		    }
		    // Metodi per prendere le informazioni di ogni contatto
		    public String getCognome(){
		        return cognome;
		    }
		    public String getEmail(){
		        return email;
		    }
		    public String getNome(){
		        return nome;
		    }
		    public String getTelefono(){
		        return telefono;
		    }
		    // Metodi per modificare le informazioni di ogni contatto
		    public void setCognome(String nuovoCognome){
		        cognome = nuovoCognome;
		    }
		    public void setEmail(String nuovaEmail){
		        email = nuovaEmail;
		    }
		    public void setNome(String nuovoNome){
		        nome = nuovoNome;
		    }
		    public void setTelefono(String nuovoTelefono){
		        telefono = nuovoTelefono;
		    }
		   
		    
				
			
		}
	
	
	public class Menu  {
		public Menu(){
			
			System.out.println("Inserisci la tua scelta: ");
			System.out.println(" 1) Inserisci un contatto ");
			System.out.println(" 2)Modifica Contatto ");
			System.out.println(" 3)Visualizza Contatto");
			System.out.println(" 4)Leggi contatti da File");
			System.out.println(" 5)Rimuovi contatto");
			System.out.println(" 6)Salva contatti su file");
			System.out.println(" 7)Esci");
			
			//JButton cerca=new JButton("Cerca");
			//JTextField cerca1=new JTextField();
			
				
				}
		
		
		
	}
	
	public class InserisciContatto  {
		public InserisciContatto(){
		}
	public void inserisci(){
		contatti=new ArrayList();
		System.out.println("Inserisci nome ");
		
		Scanner ainput=new Scanner(System.in);
		String s=ainput.nextLine();
		//System.out.println(s);
		System.out.println("Inserisci cognome");
		String s1=ainput.nextLine();
		System.out.println("Inserisci telefono");
		String s2=ainput.nextLine();
		System.out.println("Inserisci Email");
		String s3=ainput.nextLine();
		contatti.add(s);
		contatti.add(s1);
		contatti.add(s2);
		contatti.add(s3);
		
		
		RubricadaConsolle1 x=new RubricadaConsolle1();
		RubricadaConsolle1.Menu menu1=x.new Menu();
		}
	/*public void actionPerformed(ActionEvent e){
		if (e.getSource()==salva){
			inserisci();
		}
	}*/
	
	
	
 }
	
	public class FinestraModificaContatto extends JFrame {
		
		
		
		public FinestraModificaContatto(){
			
			}
		}
	
	public class FinestraRimuoviContatto extends JFrame {
		
		
		
		public FinestraRimuoviContatto(){
			
			}
	}
	
	public class Salva {
	
	public Salva(){
		}
	
	public void salvacontatto(){
		//Scanner binput=new Scanner(System.in);
		//String g=binput.nextLine();
		RubricadaConsolle1.this.contatti;	//QUI MI DA ERRORE PERCHE' NON RICONOSCE CONTATTI CHE E' L'ARRAYLIST
	try
	{
		Object o;
		
	for(int i=0;i<contatti.size();i++){
		System.out.println(contatti.get(i));
	}
		
	FileWriter writer = new FileWriter("Rubrica.txt", true);
	PrintWriter out=new PrintWriter(writer);
	
	out.println("Contatto");
	//for (int i=0; i< contatto1.size();i++){
	//o=contatto1.get(i);
	//out.println(o.toString());
	writer.flush();
	writer.close();
	//System.out.println(o.toString());
	System.out.println("Contatto salvato");
	//}
	}
	 catch(IOException e) {
	      e.printStackTrace();
	    }
	
	}
	
	}
	
	public class LeggidaFile{
		public  LeggidaFile(){
			
		}
		public void leggiFile(){
			//FileReader f=new FileReader();
			try
			{
				Runtime.getRuntime().exec("notepad Rubrica.txt");
			}catch (Exception f) {
					System.out.println ("Errore exec:" + f);
			}
		}
	}
}



|gonzo|
Prode Principiante
Messaggi: 108
Iscrizione: domenica 22 febbraio 2009, 17:43
Contatti:

Re: problemi con arrayList in java

Messaggio da |gonzo| »

Senza andare sul codice...hai istanziato la variabile?
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

Re: problemi con arrayList in java

Messaggio da tonyven »

ArrayList contatto=RubricadaConsolle.this.contatti. Cosi me la riconosce ma mi da NullPointerException quando vado a estrarre i dati dalla lista
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

Re: problemi con arrayList in java

Messaggio da tonyven »

Mi spiego meglio:
contatti.add(new Contatto(nome,cognome,telefono,email); //AGGIUNGO VALORI ALLA LISTA CHE HO DICHIARATO COME ARRAYLIST<CONTATTO> contatti.
Poi nella classe InserisciContatto
contatti=new ArrayList();
Infine per vedere gli elementi della lista

for (int i=0;i<contatti.size();i++){

System.out.println(contatti.get(i));
}

E' qui che nasce il problema.
|gonzo|
Prode Principiante
Messaggi: 108
Iscrizione: domenica 22 febbraio 2009, 17:43
Contatti:

Re: problemi con arrayList in java

Messaggio da |gonzo| »

eh si, manca contatti.add($roba_da_aggiungere) :)

ps: spesso per capire che diavolo sta succedendo il migliore amico che puoi avere è il debug. :), se proprio non vuoi debuggare almeno qualche tattico System.out.println. Ma il debug è meglio. A farlo bene sarebbe ancora meglio usare JUnit ma qui la faccenda si allungherebbe.
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

Re: problemi con arrayList in java

Messaggio da tonyven »

Adesso sto provando cosi:

ArrayList contact=RubricadaConsolle1.this.contatti;
for(int i=0;i<contact.size();i++){
System.out.println(contact.get(i));


//out.println(contact.get(i));
}

Ma non mi restituisce nulla. Non riesco a capirne il motivo se la lista è stata istanziata.Manca qualcosa? E' come se la lista fosse vuota.Booh!!!
|gonzo|
Prode Principiante
Messaggi: 108
Iscrizione: domenica 22 febbraio 2009, 17:43
Contatti:

Re: problemi con arrayList in java

Messaggio da |gonzo| »

Se non ci metti roba nella lista :) (vedi sopra)
tonyven
Prode Principiante
Messaggi: 11
Iscrizione: sabato 4 giugno 2016, 16:30
Distribuzione: 16.04
Sesso: Maschile

Re: problemi con arrayList in java

Messaggio da tonyven »

Allora vediamo di ricapitolare. Ho riscritto il codice. Ho un metodo con un arraylist che popolo e riesco a estrarre i dati. Vorrei riutilizzare la stessa arraylist in un altro metodo con gli stessi dati. Questo non mi riesce perchè vorrei estrarre i dati che ho inserito nell'altro metodo. Non riesco a scrivere il codice che mi permetta di utilizzare la stessa arraylist in due metodi differenti.
Dove sbaglio? I dati li inserisco in delle string direttamente da tastiera. Sto cercando di fare una rubrica. Quindi i campi sono 4, nome cognome,tel,email.
Gerry Ghetto

Re: problemi con arrayList in java

Messaggio da Gerry Ghetto »

Codice: Seleziona tutto

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class RubricadaConsolle1 {

	private ArrayList<Contatto> contatti = new ArrayList<Contatto>();

	public RubricadaConsolle1() {
	}

	public void inserisci() {
		System.out.println("Inserisci nome ");

		Scanner ainput = new Scanner(System.in);
		String s = ainput.nextLine();
		System.out.println("Inserisci cognome");
		String s1 = ainput.nextLine();
		System.out.println("Inserisci telefono");
		String s2 = ainput.nextLine();
		System.out.println("Inserisci Email");
		String s3 = ainput.nextLine();
		contatti.add(new Contatto(s, s1, s2, s3));
		ainput.close();
	}

        public void salvacontatto() {

		try {
			for (Contatto contatto : contatti) {
				System.out.println(contatto.toString());
			}

			FileWriter writer = new FileWriter("Rubrica.txt", true);
			PrintWriter out = new PrintWriter(writer);

			out.println("Contatto");
			writer.flush();
			writer.close();

			System.out.println("Contatto salvato");

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {

		boolean isFinished = false;
		while (!isFinished) {
			Scanner input = new Scanner(System.in);
			String s = input.nextLine();
			switch (s) {
			case "1":
				break;
			case "4":
				break;

			case "6":
				break;

			case "9":
				isFinished = true;
				input.close();
			}

		}

	}

	class Contatto {

		private String nome, cognome, email, telefono;

		public Contatto(String nome, String cognome, String telefono,
				String email) {
			this.nome = nome;
			this.cognome = cognome;
			this.telefono = telefono;
			this.email = email;
		}

		// Metodi per prendere le informazioni di ogni contatto
		public String getCognome() {
			return cognome;
		}

		public String getEmail() {
			return email;
		}

		public String getNome() {
			return nome;
		}

		public String getTelefono() {
			return telefono;
		}

		// Metodi per modificare le informazioni di ogni contatto
		public void setCognome(String nuovoCognome) {
			cognome = nuovoCognome;
		}

		public void setEmail(String nuovaEmail) {
			email = nuovaEmail;
		}

		public void setNome(String nuovoNome) {
			nome = nuovoNome;
		}

		public void setTelefono(String nuovoTelefono) {
			telefono = nuovoTelefono;
		}

		@Override
		public String toString() {
			return "Contatto: " + nome + ", " + cognome;
		}

	}
}
Il problema prinicipale: il tuo design di classe.

Codice: Seleziona tutto

public class Salva {
   
   public Salva(){
      }
   
   public void salvacontatto(){
      //Scanner binput=new Scanner(System.in);
      //String g=binput.nextLine();
      RubricadaConsolle1.this.contatti;   //QUI MI DA ERRORE PERCHE' NON RICONOSCE CONTATTI CHE E' L'ARRAYLIS
                                          // contatti è ancora NULL! E poi è meglio usare getters e setters! 
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti