|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Un post scriptum.
La faccenda del DatiInizializzazioneAuto non è un imperativo categorico. Se a un certo punto vedi che non ti quaglia, devi cercare una soluzione che ti suoni meglio.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
Puoi farmi vedere questo per il file:
""Potresti anche eliminare DatiInizializzazioneAuto e trasferire la creazione tramite Scanner in Auto "" in modo che vedo entrambi così capisco meglio perchè non va bene!!! ti ringrazio
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Questo è il file con le auto:
Codice:
fiat panda base 1986 ***accessori*** volante pedali ***accessori*** bmw 301 aero 1834 ***accessori*** tettuccio apribile scacciamosche ***accessori*** Codice:
import java.util.*; public class Auto { private String costruttore, versione, modello, anno; private LinkedList<String> accessori = new LinkedList<String>(); public Auto(Scanner in) { costruttore = in.nextLine(); modello = in.nextLine(); versione = in.nextLine(); anno = in.nextLine(); String line = in.nextLine(); while(!(line = in.nextLine()).equals("***accessori***")) { accessori.add(line); } } public String getCostruttore() { return costruttore; } public String getVersione() { return versione; } public String getModello() { return modello; } public String getAnno() { return anno; } public Collection<String> getAccessori() { return accessori; } } Codice:
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Throwable { Scanner in = new Scanner(new File(args[0])); while(in.hasNextLine()) { print(new Auto(in)); } } private static void print(Auto a) { System.out.println(a.getCostruttore()); System.out.println(a.getModello()); System.out.println(a.getVersione()); System.out.println(a.getAnno()); for(String s : a.getAccessori()) { System.out.println("\t" + s); } } }
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#24 | |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
Quote:
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
|
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
io ho provato cosi ma non va :
[code] import java.io.*; import java.util.*; class Let{ public Let()throws Exception { Scanner in = new Scanner(new File("auto1.txt")); ArrayList<Auto> al = new ArrayList<Auto>(); while(in.hasNextLine()) { print(new Auto(in)); al.add(new Auto(in)); } } public void cerca (String costr){ for(int i=0;i<al.size();i++){ if(al.get(i).getCostruttore().equalsIgnoreCase(costr)) System.out.println(al.get(i).getVersione());} } private static void print(Auto a) { System.out.println(a.getCostruttore()); System.out.println(a.getModello()); System.out.println(a.getVersione()); System.out.println(a.getAnno()); for(String s : a.getAccessori()) { System.out.println("\t" + s); } } private ArrayList<Auto> al; } [\code]
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. Ultima modifica di stregone_giallo_rosso : 06-07-2007 alle 15:04. |
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi usare il metodo add dell'ArrayList.
ilMioArrayListDiAuto.add(un'Auto);
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ho come il sospetto che di Java non vi abbiano spiegato una mazza e siate stati mandati allo sbaraglio.
Nel corpo del costruttore di Let dichiari un ArrayList<Auto> di nome al. Per riempire quell'ArrayList, nel tuo ciclo while devi mettere al posto di print(new Auto(in)) Auto auto = new Auto(in); al.add(auto); print(auto); //se vuoi stampare a video l'automobile La classe Let dichiara poi un campo di nome al e tipo ArrayList<Auto>. Nota bene che questo campo di nome al e di tipo ArrayList<Auto> è tutt'altra cosa rispetto alla variabile locale di nome al e di tipo ArrayList<Auto> dichiarata e inizializzata nel corpo del costruttore di Let. Vale a dire che se nel ciclo while metti le linee di codice che ti ho indicato, sarà la variabile locale al a "riempirsi" di Auto mentre il campo "al" non sarà minimamente influenzato dalle sorti della variabile locale. Se vuoi che sia il campo "al" a riempirsi, allora devi rimuovere la dichiarazione di variabile nel corpo del costruttore. Da ArrayList<Auto> al = new ArrayList<Auto>(); a: al = new ArrayList<Auto>(); Nel secondo caso (parliamo sempre del corpo del costruttore) il compilatore ricondurrà il nome "al" al campo "al" delle istanze di Let. Alternativamente puoi inizializzare il campo "al" all'atto della dichiarazione: private ArrayList<Auto> al = new ArrayList<Auto>(); A questo punto il costruttore non avrà più la necessità di inizializzare il campo e la linea: al = new ArrayList<Auto>() andrà eliminata.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#28 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
ho provato come hai detto , non va!!!!! non mi trova la versione a partire dal costr
![]()
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. Ultima modifica di stregone_giallo_rosso : 06-07-2007 alle 15:20. |
![]() |
![]() |
![]() |
#29 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se dico a non è b, c, magari d, è a e basta
![]() Debitamente corretto, il tuo codice fa quanto dovrebbe: Codice:
import java.io.*; import java.util.*; public class Let { private ArrayList<Auto> al = new ArrayList<Auto>(); public Let()throws Exception { Scanner in = new Scanner(new File("z:\\auto.txt")); while(in.hasNextLine()) { Auto auto = new Auto(in); al.add(auto); } cerca("BMW"); //Esempio di ricerca } public void cerca (String costr){ for(int i=0;i<al.size();i++){ if(al.get(i).getCostruttore().equalsIgnoreCase(costr)) { System.out.println("Trovato: " + al.get(i).getVersione()); } } } private static void print(Auto a) { System.out.println(a.getCostruttore()); System.out.println(a.getModello()); System.out.println(a.getVersione()); System.out.println(a.getAnno()); for(String s : a.getAccessori()) { System.out.println("\t" + s); } } }
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
si ho fatto cosi ma non va, questo è il file:
alfa romeo gt 1.9 tdi 2006 ***accessori*** VETRI SPAZZOLE VETRY OSCURATI CLIMATIZZATORE ***accessori*** audi a3 2.0 tdi 2007 ***accessori*** CERCHI 17 VETRU PRIVACY ***accessori*** audi a5 2.5 tdi 2007 ***accessori*** Q2 FARI XEON CAMBIO AUTOMATICO CLIMA TERGI CRISTALLI PANORQMA ***accessori*** se scrivo alfa romeo mi stampa il modello gt, mentre se scrivo audi non stampa niente invece dovrebbe stampare a3 e a5
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il costruttore che cerchi non è:
"audi" ma "audi " Con uno spazio in fondo. Cioè nel file non esiste il costruttore di nome "audi" e basta, c'è uno spazio vuoto in più. Se cerchi "audi ", con lo spazio in fondo, trovi le tue versioni. E' un problema di definizione del formato. Auto prende come costruttore l'intera linea, inclusi eventuali spazi bianchi, tabulazioni e quant'altro.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#32 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
grazie col tuo aiuto sono riuscito a capire qualkosa di java...thanks
![]()
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
ciao un ultima cosa , nel metodo cerca vorrei fare in modo che digitando un numero mi stampi la versione corrispondente, ho provato con il switch , ma le auto fossero a centinaia sarebbe un pò lungo
![]() es. Inserisci costruttore: audi 1 a3 2 a5 Scegli: 2 1 2.5Tdi digita la versione 1 stampa scheda auto questo è il met cerca: public void cerca (){ Scanner in = new Scanner (System.in); System.out.println("Inserisci il costruttore:"); String costr =in.nextLine() ; for(int i=0;i<al.size();i++){ if(al.get(i).getCostruttore().equalsIgnoreCase(costr)){ System.out.flush(); System.out.println(i+"."+" "+al.get(i).getModello());} } }
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
e se non ti dispiace puoi fare un interfaccia grafica che inserendo il nome del costruttore e premendo il button cerca stampi la lista di tutti e modelli che cliccando sopra a un modello stampi la lista di tutte le versioni e cliccando sulla versione stampi l'auto completa.........please!!!!!
![]()
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#35 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Per la scelta indicizzata potresti fare in questo modo. Quando l'utente seleziona il costruttore tu prendi tutti modelli di quel costruttore e li metti in un ArrayList<Auto> temporaneo. Dopodichè proponi all'utente il contenuto di quell'ArrayList:
Codice:
ArrayList<Auto> lista = un array list con dentro tutti i modelli del costruttore scelto; System.out.println("Scegli un modello."); for(int i = 0; i < lista.size(); i++) { System.out.println(i + ") " + lista.get(i).getModello()); } int indice = numero scelto dall'utente. Auto autoSelezionata = lista.get(indice);
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#36 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
solo a scopo dimostrativo
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
cosi???
public void cerca (){ Scanner in = new Scanner (System.in); System.out.println("Inserisci il costruttore:"); String costr =in.nextLine() ; for(int i=0;i<al.size();i++){ if(al.get(i).getCostruttore().equalsIgnoreCase(costr)) System.out.println(i+"."+" "+al.get(i).getModello()); ArrayList<Auto> lista = new ArrayList<Auto>(); lista.add(al.get(i).getModello()); System.out.println("Scegli un modello.");} for(int i = 0; i < lista.size(); i++) { System.out.println(i + ") " + lista.get(i).getModello()); } int indice = in.nextInt(); Auto autoSelezionata = lista.get(indice); }
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#39 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
ma non funziona!!!!!
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#40 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quando incolli del codice sorgente racchiudilo tra i tag
[code] [/code] Così preserverai l'indentazione. Il metodo cerca è ok, devi solo spostare la dichiarazione dell'ArrayList lista fuori dal ciclo e usare lista.add(al.get(i)) anzichè lista.add(al.get(i).getModello()) Codice:
public void cerca (){ ArrayList<Auto> lista = new ArrayList<Auto>(); Scanner in = new Scanner (System.in); System.out.println("Inserisci il costruttore:"); String costr =in.nextLine() ; for(int i=0;i<al.size();i++){ if(al.get(i).getCostruttore().equalsIgnoreCase(costr)) { System.out.println(i+"."+" "+al.get(i).getModello()); lista.add(al.get(i)); } } System.out.println("Scegli un modello."); for(int i = 0; i < lista.size(); i++) { System.out.println(i + ") " + lista.get(i).getModello()); } int indice = in.nextInt(); Auto autoSelezionata = lista.get(indice); print(autoSelezionata); }
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:17.