Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Albsss
    Registrato dal
    Nov 2012
    Messaggi
    11

    Ordinamento di un ArrayList

    Salve a tutti...sono nuovo nel forum!! Ho deciso di iscrivermi a questo forum perchè o vedo molto serio e completo di tutto e spero che possa risolvere anche qualche mio problema...
    allora io ho fatto un programmino banale in java la cui traccia è:
    un file denominato "auto" contiene le informazioni sulle auto disponibili in una concessionaria di auto usate. Ogni auto è rappresentata dalle seguenti informazioni:
    costruttore
    modello
    cilindrata
    alimentazione
    anno di prima immatricolazione
    costo
    Scrivere un programma per l'ordinamento del file rispetto all'anno di prima immatricolazione.
    Ora io ho creato le tre classi (Auto,Gestore e Tester) come di seguito:

    CLASSE AUTO:
    import java.io.PrintStream;
    import java.util.Scanner;


    public class Auto implements Comparable<Auto>{
    public Auto(String costruttore,String modello,int cilindrata,String alimentazione,String annoImm,int costo){
    this.costruttore = costruttore;
    this.modello = modello;
    this.cilindrata = cilindrata;
    this.alimentazione = alimentazione;
    this.annoImm = annoImm;
    this.costo = costo;
    }
    public String getCostruttore() {
    return costruttore;
    }
    public void setCostruttore(String costruttore) {
    this.costruttore = costruttore;
    }
    public String getModello() {
    return modello;
    }
    public void setModello(String modello) {
    this.modello = modello;
    }
    public String getAlimentazione() {
    return alimentazione;
    }
    public void setAlimentazione(String alimentazione) {
    this.alimentazione = alimentazione;
    }
    public int getCilindrata() {
    return cilindrata;
    }
    public void setCilindrata(int cilindrata) {
    this.cilindrata = cilindrata;
    }
    public String getAnnoImm() {
    return annoImm;
    }
    public void setAnnoImm(String annoImm) {
    this.annoImm = annoImm;
    }
    public int getCosto() {
    return costo;
    }
    public void setCosto(int costo) {
    this.costo = costo;
    }


    public static Auto read(Scanner sc){
    if(!sc.hasNext())return null;
    String costruttore = sc.nextLine();
    if(!sc.hasNext())return null;
    String modello = sc.nextLine();
    if(!sc.hasNext())return null;
    String cilindrata = sc.nextLine();
    if(!sc.hasNext())return null;
    String alimentazione = sc.nextLine();
    if(!sc.hasNext())return null;
    String annoImm = sc.nextLine();
    if(!sc.hasNext())return null;
    String costo = sc.nextLine();

    return new Auto(costruttore,modello,Integer.parseInt(cilindra ta),alimentazione,annoImm,Integer.parseInt(costo)) ;
    }


    @Override
    public String toString() {
    return "Auto [costruttore=" + costruttore + ", modello=" + modello
    + ", alimentazione=" + alimentazione + ", annoImm=" + annoImm
    + ", cilindrata=" + cilindrata + ", costo=" + costo + "]";
    }


    public void print(PrintStream ps){
    ps.println(costruttore);
    ps.println(modello);
    ps.println(cilindrata);
    ps.println(alimentazione);
    ps.println(annoImm);
    ps.println(costo);
    }


    public int compareTo(Auto a) {
    return annoImm.compareTo(a.getAnnoImm());
    }


    private String costruttore,modello,alimentazione,annoImm;
    private int cilindrata,costo;
    }

    GESTORE:
    import java.io.PrintStream;
    import java.util.*;


    public class Gestore {
    public Gestore(Scanner aut){
    ArrayList<Auto> auto = new ArrayList<Auto>();
    Auto a = Auto.read(aut);
    while(a != null){
    auto.add(a);
    a = Auto.read(aut);
    }
    }

    public void printConcessionaria(PrintStream ps){
    ps.println("CONCESSIONARIA");
    for(Auto a : auto){
    a.print(ps);
    ps.println(" ---- ");
    }
    }
    public void rAnnoImm(PrintStream ps){
    ps.println("immettere anno di immatricolazione: ");
    Scanner i = new Scanner(System.in);
    String s = i.nextLine();
    for(Auto a : auto){
    if(a.getAnnoImm().equalsIgnoreCase(s)){
    ps.println(a.toString());
    }
    }
    }
    private ArrayList<Auto>auto;
    }

    TESTER:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.PrintStream;
    import java.util.Scanner;


    public class Tester {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean uscita = true;
    PrintStream ps = new PrintStream(System.out);
    Scanner in = null;
    Scanner aut = null;

    try{
    aut = new Scanner(new File("Auto.txt"));
    }
    catch(FileNotFoundException e){
    ps.println("FILE NON TROVATO");
    }
    Gestore g = new Gestore(aut);
    in = new Scanner(System.in);
    while(uscita){
    menu(ps);
    int n = in.nextInt();
    if(n < 1 || n > 2){
    ps.println("errore");
    }
    switch(n){
    case 1 : g.rAnnoImm(ps);
    case 2 : uscita = false;
    }
    }
    }
    public static void menu(PrintStream ps){
    ps.println("Ricerca");
    ps.println("1) Anno di prima immatricolazione: ");
    ps.println("2) Uscire dal programma");
    }
    }
    ora non so come procedere con l'ordinamento del file....ho provato con il collections.sort ma non riesco nell'intento...spero qualcuno possa aiutarmi...grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Benvenuto!
    Hai letto il regolamento?? credo di no visto che mancano i tag code e il tuo codice è alquanto brutto da leggere.

    Per quanto riguarda il tuo problema:
    ora non so come procedere con l'ordinamento del file....ho provato con il collections.sort ma non riesco nell'intento...spero qualcuno possa aiutarmi...grazie
    devi ordinare il contenuto del file.
    Ti dico i passi logici:

    1. carichi il file in memoria
    2. ordini
    3. riscrivi il file ordinato (magari un altro file per fare più prove)

    l'ordinamento puoi farlo in diversi modi. Uno è appunto sfruttare Collections.sort e non so se hai letto la documentazione , se non lo hai fatto ti invito a farlo.
    Ti metto in evidenza questo

    Sorts the specified list into ascending order, according to the natural ordering of its elements. All elements in the list must implement the Comparable interface. Furthermore, all elements in the list must be mutually comparable (that is, e1.compareTo(e2) must not throw a ClassCastException for any elements e1 and e2 in the list).

    quindi gli oggetti che vuoi ordinare hanno dei requisiti che devono rispettare

    Un altro modo è scrivere l'algoritmo di ordinamento da te.

    Non so quale dei due modi devi usare, se stai imparando prediligerei il secondo
    RTFM Read That F*** Manual!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.