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

    [JAVA]Cannot find costructor wow!

    Ciao a tutti, ho un problema che non sto riuscendo a risolvere per quanto mi stia impegnando.
    L'errore che il compilatore (che bastardo!!!) mi restituisce è:


    mentre il codice è
    codice:
    abstract class prodotti
    {
    	int pesoGR;
    	final int C=20;
    	private static int totale=0;
    	public prodotti(int peso)
    	{
    		totale++;
    		pesoGR=peso;
    	}
    	public int getTotale()
    	{
    		return totale;
    	}
    	public int getPeso()
    	{
    		return pesoGR;
    	}
    	abstract double getPrezzo();
    	abstract public String toString();
    }
    class data
    {
    	int g;
    	int m;
    	int a;
    	public data(int giorni,int mesi,int anni){
    		g=giorni;
    		m=mesi;
    		a=anni;
    	}
    	public String toString(){
    		return g + "/" + m + "/" + a;
    	}
    }
    class provenienza
    {
    	private String localita[]= {"Italia","Francia","USA","Spagna","Germania"};
    	private int codice;
    	private data dataraccolta;
    	public provenienza(String l,int c,data d){
    		codice=c;
    		dataraccolta=d;
    	}
    	public String toString(){
    		return "in "+localita+" con codice "+codice+" raccolto il "+dataraccolta;
    	}
    }
    class etichetta
    {
    	private String codicebarre;
    	data imbottigliato;
    	data scadenza;
    	public etichetta(String c,data i,data s){
    		codicebarre=c;
    		imbottigliato=i;
    		scadenza=s;
    	}
    	public String toString(){
    		return "imbottigliato il "+imbottigliato+" con scadenza il "+scadenza+" e codice "+codicebarre;
    	}
    }	
    abstract class vini extends prodotti
    {
    	double percConserv;
    	provenienza info;
    	public vini(double perc,provenienza prov,int peso)
    	{
    		super(peso);
    		percConserv=perc;
    		info=prov;
    	}
    	public double getConservante()
    	{
    		return percConserv;
    	}
    }
    class rossi extends vini
    {
    	public rossi(double perc, provenienza inforossi, int peso)
    	{
    		super(perc,inforossi,peso);
    	}
    	public void Colora(){}
    	public double getPrezzo()
    	{
    		return Math.pow(C+getPeso(),5)*getConservante()/0.3;
    	}
    	public String toString()
    	{
    		return "Vino Rosso proveniente da: "+info+" Peso: "+this.getPeso()+" Percentuale di conservante: "+percConserv+" ";
    	}
    }
    class bianchi extends vini
    {
    	int m;
    	etichetta e;
    	public bianchi(double perc, provenienza infobianchi, int peso, int m, etichetta eti)
    	{
    		super(perc,infobianchi,peso);
    		e=eti;
    	}
    	public etichetta getEtichetta()
    	{
    		return e;
    	}
    	public double getPrezzo()
    	{
    		return 52*C+3*m;
    	}
    	public String toString()
    	{
    		return "Vino Bianco proveniente da: "+info+" Peso: "+this.getPeso()+" Percentuale di conservante: "+percConserv+" ";
    	}
    }
    class spumanti extends bianchi
    {
    	private double pergas;
    	public spumanti(double percento,infoprovenienza infospuma, int peso,etichetta etispuma,double percentogas)
    	{
    		super(percento,infospuma,peso,etispuma);
    		pergas=percentogas;
    	}
    }
    class oli extends prodotti
    {
    	private double viscosita;
    	public oli(double visco, int peso)
    	{
    		super(peso);
    	}
    	public double getPrezzo()
    	{
    		return C*getPeso();
    	}
    	public void aromatizzazione(){}
    	public String toString()
    	{
    		return "olio con indice di viscosità: "+viscosita+ "Peso: "+this.getPeso()+" ";
    	}
    }
    Il problema, se ho capito bene l'errore (cioè manca il costruttore di bianchi per cui il super di spumanti non va) è che il costruttore di bianchi c'è!!! Vi prego di aiutarmi perchè ci sto uscendo pazzo.
    Grazie infinite in anticipo.
    Pizzamargherita

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Cannot find costructor wow!

    Originariamente inviato da pizzamargherita
    Il problema, se ho capito bene l'errore (cioè manca il costruttore di bianchi per cui il super di spumanti non va) è che il costruttore di bianchi c'è!!! Vi prego di aiutarmi perchè ci sto uscendo pazzo.
    Innanzitutto:

    codice:
    p.java:119: cannot find symbol
    symbol  : class infoprovenienza
    location: class spumanti
            public spumanti(double percento,infoprovenienza infospuma, int peso,etic
    hetta etispuma,double percentogas)
                                            ^
    1 error
    Cosa è infoprovenienza?? Un tuo errore di scrittura?

    Anche ammesso di mettere 'provenienza', comunque non compila. Il super() in spumanti passa 4 argomenti al costruttore della superclasse (bianchi) ... che però ha 5 parametri, non 4.

    Che cosa sia quel int m lo puoi sapere solo tu .....


    Alcune cose da notare:

    Abituati fin da subito a mettere nomi coerenti e che seguono le convenzioni adottate dalla comunità di sviluppatori Java: i nomi di classi/interfacce vanno messi con le iniziali delle parole in maiuscolo (stile UpperCamelCase) e generalmente al singolare. Quindi ad esempio: Prodotto, Data, Provenienza, Etichetta, Vino, VinoRosso, VinoBianco, ecc....

    I nomi delle variabili dovrebbero seguire lo stile lowerCamelCase, es. percentualeGas.
    I nomi delle variabili di istanza e dei parametri di costruttori/metodi si mettono generalmente uguali e si usa 'this' per fare riferimento alla variabile di istanza.
    La tua classe data diventerebbe:

    codice:
    class Data {
        private int giorno;
        private int mese;
        private int anno;
    
        public Data(int giorno, int mese, int anno) {
            this.giorno = giorno;
            this.mese = mese;
            this.anno = anno;
        }
        ......
    }
    Questo ha il vantaggio che non devi stare ad "inventarti" nomi strani o diversi per le variabili (quindi eviti solo confusione a te e a chi legge il codice!).

    E le variabili di istanza si mettono generalmente private o protected (a seconda del "design" della gerarchia di classi) e si mettono metodi setter e/o getter per scrivere/leggere il valore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao andbin grazie per i consigli utilissimi ma questo tanto era un programma "interno", diciamo anche "la brutta copia", giusto per avere qualcosa funzionante poi ovviamente variabili e funzioni le cambio di nome. Per il this è un ottima idea non ci ho pensato lo cambierò ora ora. Per quanto riguarda infoprovenienza hai ragione è un errore mio di "confusione". 'm' invece un parametro secondario che però serve stia lì. Ho tolto m e cambiato la provenienza e funziona, non so come accidenti ho fatto a non accorgermene io, comunque ti ringrazio molto. Ora sto testando la classe di prova (quella con il main che deve creare ed inizializzare una collezione di n prodotti agricoli con tutte le relative informazioni). Se non dovesse funzionare qualcosa che non riuscirò a capire posso disturbarti ancora, prima di tentare la distruzione fisica della macchina ?
    Saluti e grazie.
    Pizzamargherita.

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.