Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [Java] Semplici classi

  1. #1

    [Java] Semplici classi

    Salve a tutti. Ho appena iniziato a programmare in Java, ma mi saltano fuori 4 errori in queste due classi..

    E' un programmino che consente di ottenere l'IMC di una persona conoscendo peso, altezza ed età.

    Persona.java

    codice:
    public class Persona
    {
    	public float imc;
    	public int eta;
    	public float peso;
    	public float altezza;
    	
        public Persona(int ett, float p, float h)
        {
        	eta = ett;
        	peso = p;
        	altezza = h;
        	imc = 0;
        }
        
        public void setPersona(int ett, float p, float h)
        {
        	eta = ett;
        	peso = p;
        	altezza = h;
        	imc = 0;
        }
        
        public float calcolaImc()
        {
        	imc = peso / (altezza * altezza);
        	return imc;
        }
        
        public void getMessaggio()
        {
    		if(imc>50)
    			System.out.println("Grave OBESITA'");
    		else if(imc>40)
    			System.out.println("Patologicamente OBESO");
    		else if(imc>35)
    			System.out.println("Gravemente OBESO");
    		else if(imc>30)
    			System.out.println("OBESO");
    		else if(imc>25)
    			System.out.println("SOVRAPPESO");
    		else if(imc>18.5)
    			System.out.println("REGOLARE");
    		else if(imc>16)
    			System.out.println("Magrezza");
    		else
    			System.out.println("Grave MAGREZZA");
        }
    }
    progPersona.java

    codice:
    import java.io.*;
    
    public class progPersona
    {
        public progPersona()
        {
        	InputStreamReader input = new InputStreamReader(System.in);
        	BufferedReader tastiera = new BufferedReader(input);
        
        	int ett;
        	float p;
        	float h;
        	int risp;
        	
        	System.out.println("Inserisci l'Eta': ");
        	try
        	{
        		String et = tastiera.readLine();
        		ett = Integer.valueOf(et).intValue();
        	}
        	catch(Exception e)
        	{
        		System.out.println("Reinserire Eta'");
        	}
        	
            	System.out.println("Inserisci il Peso: ");
        	try
        	{
        		String pe = tastiera.readLine();
        		p = Float.valueOf(pe).floatValue();
        	}
        	catch(Exception e)
        	{
        		System.out.println("Reinserire Peso");
        	}
        
            	System.out.println("Inserisci Altezza: ");
        	try
        	{
        		String al = tastiera.readLine();
        		h = Float.valueOf(al).floatValue();
        	}
        	catch(Exception e)
        	{
        		System.out.println("Reinserire Altezza");
        	}
        	
        	Persona p = new Persona(ett,p,h);
        	
        	System.out.println("INDICE DI MASSA CORPOREA (IMC):\n");
        	System.out.println("Eta':               -> " + ett);
        	System.out.println("IMC:                -> " + Persona.calcolaImc());
        	System.out.println("-------------------------------------------------------");
        	System.out.println("Situazione Peso:    -> " + Persona.getMessaggio());
    
        }
    }


    GLI ERRORI SONO:

    codice:
    --------------------Configuration: <Default>--------------------
    C:\Users\Sergio\Desktop\Java\progPersona.java:48: p is already defined in progPersona()
            Persona p = new Persona(ett,p,h);
                    ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:52: non-static method calcolaImc() cannot be referenced from a static context
            System.out.println("IMC:                -> " + Persona.calcolaImc());
                                                                  ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:54: non-static method getMessaggio() cannot be referenced from a static context
            System.out.println("Situazione Peso:    -> " + Persona.getMessaggio());
                                                                  ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:54: 'void' type not allowed here
            System.out.println("Situazione Peso:    -> " + Persona.getMessaggio());
                               ^
    4 errors
    
    Process completed.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Alcune considerazioni:

    1) Java ha un forum dedicato, quindi sposto questa discussione
    2) Il codice va postato all'interno degli appositi tag [code] e [/code] (ho già modificato il tuo post a riguardo)


    Sposto la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Re: [Java] Semplici classi

    Originariamente inviato da SergiusXP
    [/code]



    GLI ERRORI SONO:

    codice:
    --------------------Configuration: <Default>--------------------
    C:\Users\Sergio\Desktop\Java\progPersona.java:48: p is already defined in progPersona()
            Persona p = new Persona(ett,p,h);
                    ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:52: non-static method calcolaImc() cannot be referenced from a static context
            System.out.println("IMC:                -> " + Persona.calcolaImc());
                                                                  ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:54: non-static method getMessaggio() cannot be referenced from a static context
            System.out.println("Situazione Peso:    -> " + Persona.getMessaggio());
                                                                  ^
    C:\Users\Sergio\Desktop\Java\progPersona.java:54: 'void' type not allowed here
            System.out.println("Situazione Peso:    -> " + Persona.getMessaggio());
                               ^
    4 errors
    
    Process completed.
    Allora... il primo dice che hai definito due volte p.

    Gli altri dicono solo che se vuoi chiamare quei tre metodi dal un metodo static (come main) devi definirli static. Basta un public static void nome

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Gli ultimi tre messaggi ti stanno dicendo che stai chiamando i metodi come se questi fossero statici. Quello che devi fare è richiamarli sull'oggetto p e non sulla classe Persona...

    codice:
    System.out.println("IMC:                -> " + p.calcolaImc());
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    davvero, grazie infinite.

    Sono stato davvero stupido, avrei dovuto guardare la sezione Java.. Non ho fatto caso..

    Grazie ancora

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.