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

    [JAVA] Confronto stringa acquisita da tastiera

    salve a tutti sono alle prime armi, e tutto da autodidatta...vi spiego il mio problema, ho creato uno stupido programma per console per esercitarmi per l'esame, in pratica mi succede che nel momento in cui chiamo un metodo passandole una stringa scritta da me tra apici mi funziona, ma se la prendo da tastiera non va, non capisco il perchè..sto diventando scemo..sono tre classi ve le copio qua se mi potete aiutare gentilmente

    ---------prima classe: dichiaro le proprietà per la ricerca di auto usate in un concessionario online.


    package macchine;


    public class macchine {


    private String modello;
    private int annoImm;
    private String consumo;
    private double prezzo;
    private int km;

    public macchine(String modello, int annoImm, String consumo, double prezzo,
    int km) {
    this.modello = modello;
    this.annoImm = annoImm;
    this.consumo = consumo;
    this.prezzo = prezzo;
    this.km = km;
    }


    public macchine(){

    }

    public String getModello() {
    return modello;
    }


    public void setModello(String modello) {
    this.modello = modello;
    }


    public int getAnnoImm() {
    return annoImm;
    }


    public void setAnnoImm(int annoImm) {
    this.annoImm = annoImm;
    }


    public String getConsumo() {
    return consumo;
    }


    public void setConsumo(String consumo) {
    this.consumo = consumo;
    }


    public double getPrezzo() {
    return prezzo;
    }


    public void setPrezzo(double prezzo) {
    this.prezzo = prezzo;
    }


    public int getKm() {
    return km;
    }


    public void setKm(int km) {
    this.km = km;
    }


    }


    -----------------seconda classe dove ha come proprietà un array di oggetti macchina------------------

    package macchine;


    public class mainp {


    private macchine m []= new macchine [7];


    public macchine[] getM() {
    return m;
    }




    public void setM(macchine[] m) {
    this.m = m;
    }




    public mainp(macchine[] m) {
    this.m = m;
    }


    public void stampa(){

    for(int i=0;i<m.length;++i){

    System.out.println("modello: "+m[i].getModello());
    System.out.println("anno immatricolazione: "+m[i].getAnnoImm());
    System.out.println("prezzo: "+m[i].getPrezzo());
    System.out.println("emissione: "+m[i].getConsumo());
    System.out.println("chilometri: "+ m[i].getKm());
    System.out.println();
    }

    }

    public void ordinaXanno(){

    macchine ordinato;
    for(int i=1;i<m.length;++i)
    for(int j=0;j<m.length-1;++j){


    if(m[j].getAnnoImm()>m[j+1].getAnnoImm()){

    ordinato=m[j];
    m[j]=m[j+1];
    m[j+1]=ordinato;
    }
    }

    stampa();


    }

    public void ordinaXkm(){

    macchine ordinato;
    for(int i=1;i<m.length;++i)
    for(int j=0;j<m.length-1;++j){


    if(m[j].getKm()>m[j+1].getKm()){


    ordinato=m[j];
    m[j]=m[j+1];
    m[j+1]=ordinato;
    }
    }

    stampa();


    }


    public void verifica(String mod){

    for(int i=0;i<m.length;i++){

    if(m[i].getModello()==mod){
    System.out.println("modello: "+m[i].getModello());
    System.out.println("anno immatricolazione: "+m[i].getAnnoImm());
    System.out.println("prezzo: "+m[i].getPrezzo());
    System.out.println("emissione: "+m[i].getConsumo());
    System.out.println("chilometri: "+ m[i].getKm());

    }

    }

    for(int i=0;i<m.length;i++){

    if(i==m.length-1 && m[i].getModello()!=mod)
    System.out.println("modello non trovato");

    }

    }

    }


    --------------------terza classe il main dove inizia il programma---------------

    package macchine;


    import java.util.Scanner;


    public class principale {


    public static void main(String[] args) {

    macchine c[]= new macchine [7];
    mainp dd = new mainp (c);

    for(int i=0;i<c.length;++i){

    c[0]=new macchine("fiat 500",1990,"benzina",2000,120900);
    c[1]=new macchine("citroen c1",2009,"benzina",6000,60900);
    c[2]=new macchine("renault clio",1998,"benzina",1600,68900);
    c[3]=new macchine("seat ibiza",1996,"benzina",900,50900);
    c[4]=new macchine("seat cordoba",1999,"diesel",3400,95100);
    c[5]=new macchine("lamborghini gallardo",2006,"diesel",68000,23000);
    c[6]=new macchine("tvr cervera",2003,"benzina",9400,65100);

    }

    //Scanner in = new Scanner(System.in);
    //String s=null;
    //s=in.nextLine();
    //dd.verifica(s);

    dd.verifica("fiat 500");

    }


    }


    allora il problema strano si verifica quando io dal main chiamo il metodo dd.verifica dove ha come parametro appunto la stringa da controllare se la macchina esiste,così mi funziona ma quando prendo da tastiera e gli passo la variabile string s non mi trova nulla, mi dice sempre e cmq nessun modello trovato; è troppo strano sapete darmi una spiegazione

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    l'errore è nel metodo "verifica". Il confronto tra due stringhe non si fa con l'operatore == ma con l'apposito metodo "equals", quindi

    codice:
    if(m[i].getModello().equals(mod))...

    Poi qualche precisazione:
    - se inserisco "fiat 500" il programma mi stampa le informazioni relative a questo modello. Però sotto viene scritto anche "modello non trovato": secondo me questo è un errore
    - per convenzione i nomi delle classi dovrebbero sempre iniziare con la lettera maiuscola
    - dovrebbe esserci una parte in cui stampi una richiesta all'utente (ad esempio "Inserisci il modello"). Altrimenti quando lanci il programma (ad esempio da Eclipse) non compare la console e sembra che non stia funzionando nulla
    - dopo che hai finito di utilizzarlo, lo Scanner va chiuso con l'apposito metodo "close"
    - per incollare codice sul forum, utilizza gli appositi tag CODE


  3. #3
    Quote Originariamente inviata da minomic Visualizza il messaggio
    Ciao,
    l'errore è nel metodo "verifica". Il confronto tra due stringhe non si fa con l'operatore == ma con l'apposito metodo "equals", quindi

    codice:
    if(m[i].getModello().equals(mod))...

    Poi qualche precisazione:
    - se inserisco "fiat 500" il programma mi stampa le informazioni relative a questo modello. Però sotto viene scritto anche "modello non trovato": secondo me questo è un errore
    - per convenzione i nomi delle classi dovrebbero sempre iniziare con la lettera maiuscola
    - dovrebbe esserci una parte in cui stampi una richiesta all'utente (ad esempio "Inserisci il modello"). Altrimenti quando lanci il programma (ad esempio da Eclipse) non compare la console e sembra che non stia funzionando nulla
    - dopo che hai finito di utilizzarlo, lo Scanner va chiuso con l'apposito metodo "close"
    - per incollare codice sul forum, utilizza gli appositi tag CODE


    è veramente strano, avvolte mi funziona anke senza l'equals non so xkè, e cmq anche quando gli passo la stringa lui confronta l'oggetto con la stringa quindi dovrebbe incasinarsi lo stesso , stavo cercando di togliere il modello nn trovato anche quando trova una macchina, mi sembra giusto

    codice:
    public void verifica(String mod){        
            for(int i=0;i<m.length;i++){
                
                if(m[i].getModello().equals(mod)){
                System.out.println("modello: "+m[i].getModello());
                System.out.println("anno immatricolazione: "+m[i].getAnnoImm());
                System.out.println("prezzo: "+m[i].getPrezzo());
                System.out.println("emissione: "+m[i].getConsumo());
                System.out.println("chilometri: "+ m[i].getKm());
                
            }
                 else {                if( i==m.length-1 && m[i].getModello().equals(mod)!=true)
                    System.out.println("modello non trovato");
            }
        
             
                    
                
            }
    codice:
    //main
    mainp dd = new mainp (c);        Scanner in = new Scanner(System.in);
            String s=null;
        
                
                
                for(;;){
                    
                System.out.println("inserisci modello");    
                s=in.nextLine();
                dd.verifica(s);
                
                    
                }
    nel blocco else del metodo dico che se sono arrivato alla fine dell'array e nello stesso tempo non ha trovato nessun oggetto uguale, le due condizioni saranno vere e stampa modello nn trovato,funziona tutto, anke se ci sono piu modelli li trova tutti, se inserisco uno che nn cè nn lo trova, ma se trova un oggetto entra cmq nel blocco dell'else appunto xke appena finisce il ciclo ,a meno che non inserisco l'ultimo oggetto per la ricerca, quella condizione si verificherà sempre e quindi mi stamperà sempre modello nn trovato, come posso risolvere secondo voi?
    p.s scusate la grammatica xD
    Ultima modifica di eleinad85; 13-09-2014 a 16:00

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.