Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    3

    [Java] Convertitore che non converte

    il primo problema è che non ho mai programmato in java.
    il secondo problema è che devo per forza programmare in java.
    il terzo problema è che sto provando a programmare in java ma non ne vengo fuori e non so più dove sbattere la testa.
    siate clementi e abbiate pazienza, probabilmente vi metterete le mani nei capelli...
    questo è quello che sono riuscito a fare fino ad ora, in circa una settimana:
    codice:
    import javax.swing.*;//versione migliorata e potenziata di java.awt
    import java.awt.*;//il package java.awt contiene le classi che permettono la creazione di interfacce grafiche
    import java.applet.*;//il package applet
    import java.awt.event.*;//il package
    
    public class convertitore extends JApplet implements ActionListener
    
    {
    
    	String[] choice={"   --Selezionare grandezza fisica--","Pressione","Energia"};//array formato da...
    	String[] energy={"Elettronvolt (eV)","Joule (J)","Calorie (Cal)"};
    	String[] pression={"Pascal (Pa)","Millimetri di mercurio (mmHg)","Bar"};
    	JLabel name;//etichetta
    	JLabel quantityl;
    	JComboBox quantityc;//menu di scelta (choice nel package java.awt)
    	JLabel valuel;
    	JLabel error;
    	JTextField valuet;//campo testo
    	JLabel startl;
    	JComboBox startc;
    	JLabel endl;
    	JComboBox endc;
    	JButton convert;//pulsante
    	JLabel resultl;
    	JTextField resultt;
    	ComboBoxModel enlists;
    	ComboBoxModel pressionlists;
    	ComboBoxModel enliste;
    	ComboBoxModel pressionliste;
    	Double bartommhg=75.0064;
    	Double mmhgtobar=0.0133;
    	Double mmhgtopa=133.3220;
    	Double patommhg=0.0075;
    	Double bartopa=10000.0;
    	Double patobar=0.0001;
    	Double evtoj=1.6022e-19;
    	Double jtoev=6.2414e18;
    	Double evtoca=3.8265e-20;
    	Double catoev=2.6131e19;
    	Double jtoca=0.2388;
    	Double catoj=4.1868;
    
    	public void init()//il metodo init inizializza le variabili prima che l'applet entri in esecuzione
    
    	{
    
    		setLayout(null);//permette la collocazione libera degli elementi grafici nell'interfaccia grafica
    		setSize(600,400);//definisce la dimensione dell'interfaccia grafica
    		setBackground(Color.gray);
    
    		name=new JLabel("Convertitore di unità di misura",JLabel.CENTER);
    		name.setBounds(200,10,200,20);//definisce la posizione e la dimensione di un oggetto
    		name.setBackground(Color.white);//definisce il colore dello sfondo
    		add(name);//aggiunge l'elemento all'interfaccia grafica
    
    		quantityl=new JLabel("Grandezza da convertire",JLabel.CENTER);
    		quantityl.setBounds(200,50,200,20);
    		quantityl.setBackground(Color.white);
    		add(quantityl);
    
    		quantityc=new JComboBox(choice);
    		quantityc.setBounds(190,70,220,20);
    		quantityc.setBackground(Color.white);
    		quantityc.addActionListener(this);//associa un ascoltatore di eventi all'oggetto
    		add(quantityc);
    
    		valuel=new JLabel("Valore da convertire",JLabel.CENTER);
    		valuel.setBounds(200,120,200,15);
    		valuel.setBackground(Color.white);
    		add(valuel);
    
    		valuet=new JTextField();
    		valuet.setBounds(200,140,200,20);
    		valuet.setBackground(Color.white);
    		add(valuet);
    
    		startl=new JLabel("Da");
    		startl.setBounds(30,190,20,20);
    		add(startl);
    
    		startc=new JComboBox();
    		startc.setBounds(50,190,200,20);
    		startc.setBackground(Color.white);
    		add(startc);
    
    		endl=new JLabel("A");
    		endl.setBounds(330,190,20,20);
    		endl.setBackground(Color.white);
    		add(endl);
    
    		endc=new JComboBox();
    		endc.setBounds(350,190,200,20);
    		endc.setBackground(Color.white);
    		add(endc);
    
    		convert=new JButton("Converti");
    		convert.setBounds(250,240,100,20);
    		convert.setBackground(new Color (164,187,213));
    		convert.addActionListener(this);
    		add(convert);
    
    		resultl=new JLabel("Risultato",JLabel.CENTER);
    		resultl.setBounds(250,290,100,20);
    		resultl.setBackground(Color.white);
    		add(resultl);
    
    		resultt=new JTextField();
    		resultt.setBounds(200,310,200,20);
    		resultt.setBackground(Color.white);
    		add(resultt);
    
    		error=new JLabel("",JLabel.CENTER);
    		error.setBounds(200,360,200,20);
    		error.setForeground(Color.red);//definisce il colore del testo
    		add(error);
    
    		enlists=new DefaultComboBoxModel(energy);
    		enliste=new DefaultComboBoxModel(energy);
    
    		pressionlists=new DefaultComboBoxModel(pression);
    		pressionliste=new DefaultComboBoxModel(pression);
    
    	}
    
    	public void actionPerformed (ActionEvent e)//metodo per la gestione degli eventi
    
        {
    
    		Object source=e.getSource();
    
    		int idx=quantityc.getSelectedIndex();//assegna un valore intero all'elemento selzionato nel menu "quantityc"
    
            if(source==quantityc)
    
            {
    
    			if(idx==1)
    
    			{
    
    				startc.setModel(pressionlists);//setModel permette di associare un modello predefinito
    				endc.setModel(pressionliste);
    
    			}
    
    			else if(idx==2)
    
    			{
    
    				startc.setModel(enlists);
    				endc.setModel(enliste);
    
    			}
    
    
    		}
    
    		else if (source==convert)
    
    		{
    			String string=valuet.getText().trim();//elimina gli spazi nella stringa contenuta nel campo testo "valuet" e la assegna ad una variabile di tipo string
    
    			try
    
    			{
    
    				Double i=Double.valueOf(string).doubleValue();
    				resultt.setText(String.valueOf(i));
    
    
    			}
    
    			catch (NumberFormatException d)//gestione eccezioni; esegue un controllo sul testo inserito nel campo valuet e restituisce un messaggio nel caso in cui non sia un numero
    
    			{
    
    				error.setText("Inserire valore numerico!!");
    
    			}
    
    
    			/*Double i=Double.valueOf(string).doubleValue();
    				double a=0.0;
    				if (idx==1)
    
    				{
    
    					int idxps=startc.getSelectedIndex();
    					int idxpe=endc.getSelectedIndex();
    
    					switch (idxps)
    
    					{
    						case 1:
    
    						{
    
    							switch(idxpe)
    
    							{
    								case 1:
    									a=(i);
    									break;
    
    								case 2:
    									a=(i*patommhg);
    									break;
    
    								case 3:
    									a=(i*patobar);
    									break;
    							}
    						}
    
    						case 2:
    
    						{
    
    							switch(idxpe)
    
    							{
    
    								case 1:
    									a=i*mmhgtopa;
    									break;
    
    								case 2:
    									a=i;
    									break;
    
    								case 3:
    									a=i*mmhgtobar;
    									break;
    
    							}
    
    						}
    
    						case 3:
    
    						{
    
    							switch(idxpe)
    
    							{
    
    								case 1:
    									a=i*bartopa;
    									break;
    
    								case 2:
    									a=i*bartommhg;
    									break;
    
    								case 3:
    									a=i;
    									break;
    							}
    
    						}
    
    
    				}
    
    
    	    	}*/
    		}
    
    	}
    
    
    
    
    
    }
    sembrerebbe un convertitore di unità di misura, se solo fosse in grado di fare il suo lavoro.
    il problema è proprio questo in effetti, non ho la più pallida idea di come gestire la parte relativa alla conversione dei dati.
    se qualcuno potesse darmi una mano a completare e sistemare il programma gliene sarei davvero grato.
    ovviamente niente di complicato o troppo "avanzato", è evidente che il mio livello di conoscenze rasenta il suolo.
    sono alla ricerca della massima semplicità.

    un grazie in anticipo.

    n
    -ZuMBi-

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    il codice adesso funziona... modifiche fatte:
    - esteso la classe a jframe invece che japplet, più facile per iniziare;
    - mancava il costruttore della classe;
    - mancava il main;
    - dichiarato le variabili double invece che Double.

    consiglio: le cose che hai dimenticato fanno parte del bagaglio base di java, quindi prenditi un buon manuale e dagli una letta... ciao

    codice:
    import javax.swing.*;//versione migliorata e potenziata di java.awt
    
    import java.awt.*;//il package java.awt contiene le classi che permettono la creazione di interfacce grafiche
    
    import java.awt.event.*;//il package
    
    public class convertitore extends JFrame implements ActionListener
    
    {
    
    	String[] choice={"   --Selezionare grandezza fisica--","Pressione","Energia"};//array formato da...
    	String[] energy={"Elettronvolt (eV)","Joule (J)","Calorie (Cal)"};
    	String[] pression={"Pascal (Pa)","Millimetri di mercurio (mmHg)","Bar"};
    	JLabel name;//etichetta
    	JLabel quantityl;
    	JComboBox quantityc;//menu di scelta (choice nel package java.awt)
    	JLabel valuel;
    	JLabel error;
    	JTextField valuet;//campo testo
    	JLabel startl;
    	JComboBox startc;
    	JLabel endl;
    	JComboBox endc;
    	JButton convert;//pulsante
    	JLabel resultl;
    	JTextField resultt;
    	ComboBoxModel enlists;
    	ComboBoxModel pressionlists;
    	ComboBoxModel enliste;
    	ComboBoxModel pressionliste;
    	double bartommhg=75.0064;
    	double mmhgtobar=0.0133;
    	double mmhgtopa=133.3220;
    	double patommhg=0.0075;
    	double bartopa=10000.0;
    	double patobar=0.0001;
    	double evtoj=1.6022e-19;
    	double jtoev=6.2414e18;
    	double evtoca=3.8265e-20;
    	double catoev=2.6131e19;
    	double jtoca=0.2388;
    	double catoj=4.1868;
    	JPanel contentPane;
    	
    	public convertitore() {
    	    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    	    try {
    	      init();
    	    }
    	    catch (Exception e) {
    	      e.printStackTrace();
    	    }
    	   
    	  }
    
    	
    	public static void main(String args[]){
    		convertitore c=new convertitore();
    		boolean packFrame = false;
    		if (packFrame) {
    		      c.pack();
    		    }
    		    else {
    		      c.validate();
    		    }
    		    //Center the window
    		    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    		    Dimension frameSize = c.getSize();
    		    if (frameSize.height > screenSize.height) {
    		      frameSize.height = screenSize.height;
    		    }
    		    if (frameSize.width > screenSize.width) {
    		      frameSize.width = screenSize.width;
    		    }
    		    c.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    		    c.setVisible(true);}
    		
    	
    	
    	public void init()//il metodo init inizializza le variabili prima che l'applet entri in esecuzione
    
    	{
    		contentPane = (JPanel)this.getContentPane();
    		contentPane.setLayout(null);//permette la collocazione libera degli elementi grafici nell'interfaccia grafica
    		setSize(600,400);//definisce la dimensione dell'interfaccia grafica
    		setBackground(Color.gray);
    
    		name=new JLabel("Convertitore di unità di misura",JLabel.CENTER);
    		name.setBounds(200,10,200,20);//definisce la posizione e la dimensione di un oggetto
    		name.setBackground(Color.white);//definisce il colore dello sfondo
    		add(name);//aggiunge l'elemento all'interfaccia grafica
    
    		quantityl=new JLabel("Grandezza da convertire",JLabel.CENTER);
    		quantityl.setBounds(200,50,200,20);
    		quantityl.setBackground(Color.white);
    		add(quantityl);
    
    		quantityc=new JComboBox(choice);
    		quantityc.setBounds(190,70,220,20);
    		quantityc.setBackground(Color.white);
    		quantityc.addActionListener(this);//associa un ascoltatore di eventi all'oggetto
    		add(quantityc);
    
    		valuel=new JLabel("Valore da convertire",JLabel.CENTER);
    		valuel.setBounds(200,120,200,15);
    		valuel.setBackground(Color.white);
    		add(valuel);
    
    		valuet=new JTextField();
    		valuet.setBounds(200,140,200,20);
    		valuet.setBackground(Color.white);
    		add(valuet);
    
    		startl=new JLabel("Da");
    		startl.setBounds(30,190,20,20);
    		add(startl);
    
    		startc=new JComboBox();
    		startc.setBounds(50,190,200,20);
    		startc.setBackground(Color.white);
    		add(startc);
    
    		endl=new JLabel("A");
    		endl.setBounds(330,190,20,20);
    		endl.setBackground(Color.white);
    		add(endl);
    
    		endc=new JComboBox();
    		endc.setBounds(350,190,200,20);
    		endc.setBackground(Color.white);
    		add(endc);
    
    		convert=new JButton("Converti");
    		convert.setBounds(250,240,100,20);
    		convert.setBackground(new Color (164,187,213));
    		convert.addActionListener(this);
    		add(convert);
    
    		resultl=new JLabel("Risultato",JLabel.CENTER);
    		resultl.setBounds(250,290,100,20);
    		resultl.setBackground(Color.white);
    		add(resultl);
    
    		resultt=new JTextField();
    		resultt.setBounds(200,310,200,20);
    		resultt.setBackground(Color.white);
    		add(resultt);
    
    		error=new JLabel("",JLabel.CENTER);
    		error.setBounds(200,360,200,20);
    		error.setForeground(Color.red);//definisce il colore del testo
    		add(error);
    
    		enlists=new DefaultComboBoxModel(energy);
    		enliste=new DefaultComboBoxModel(energy);
    
    		pressionlists=new DefaultComboBoxModel(pression);
    		pressionliste=new DefaultComboBoxModel(pression);
    
    	}
    
    	public void actionPerformed (ActionEvent e)//metodo per la gestione degli eventi
    
        {
    
    		Object source=e.getSource();
    
    		int idx=quantityc.getSelectedIndex();//assegna un valore intero all'elemento selzionato nel menu "quantityc"
    
            if(source==quantityc)
    
            {
    
    			if(idx==1)
    
    			{
    
    				startc.setModel(pressionlists);//setModel permette di associare un modello predefinito
    				endc.setModel(pressionliste);
    
    			}
    
    			else if(idx==2)
    
    			{
    
    				startc.setModel(enlists);
    				endc.setModel(enliste);
    
    			}
    
    
    		}
    
    		else if (source==convert)
    
    		{
    			String string=valuet.getText().trim();//elimina gli spazi nella stringa contenuta nel campo testo "valuet" e la assegna ad una variabile di tipo string
    
    			try
    
    			{
    
    				double i=Double.valueOf(string).doubleValue();
    				resultt.setText(String.valueOf(i));
    
    
    			}
    
    			catch (NumberFormatException d)//gestione eccezioni; esegue un controllo sul testo inserito nel campo valuet e restituisce un messaggio nel caso in cui non sia un numero
    
    			{
    
    				error.setText("Inserire valore numerico!!");
    
    			}
    
    
    			/*Double i=Double.valueOf(string).doubleValue();
    				double a=0.0;
    				if (idx==1)
    
    				{
    
    					int idxps=startc.getSelectedIndex();
    					int idxpe=endc.getSelectedIndex();
    
    					switch (idxps)
    
    					{
    						case 1:
    
    						{
    
    							switch(idxpe)
    
    							{
    								case 1:
    									a=(i);
    									break;
    
    								case 2:
    									a=(i*patommhg);
    									break;
    
    								case 3:
    									a=(i*patobar);
    									break;
    							}
    						}
    
    						case 2:
    
    						{
    
    							switch(idxpe)
    
    							{
    
    								case 1:
    									a=i*mmhgtopa;
    									break;
    
    								case 2:
    									a=i;
    									break;
    
    								case 3:
    									a=i*mmhgtobar;
    									break;
    
    							}
    
    						}
    
    						case 3:
    
    						{
    
    							switch(idxpe)
    
    							{
    
    								case 1:
    									a=i*bartopa;
    									break;
    
    								case 2:
    									a=i*bartommhg;
    									break;
    
    								case 3:
    									a=i;
    									break;
    							}
    
    						}
    
    
    				}
    
    
    	    	}*/
    		}
    
    	}
    
    
    
    
    
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    3
    innanzitutto ti ringrazio per l'aiuto.
    allora, vediamo...
    lanciando l'applet corretta mi appare il seguente messaggio d'errore e l'applet non viene inizializzata.


    java.lang.ClassCastException: convertitore cannot be cast to java.applet.Applet
    at sun.applet.AppletPanel.createApplet(AppletPanel.ja va:778)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java: 707)
    at sun.applet.AppletPanel.run(AppletPanel.java:361)
    at java.lang.Thread.run(Thread.java:619)


    il fatto è che non so a che cosa possa essere dovuto.
    qualche consiglio in merito?

    ciao

    n
    -ZuMBi-

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    nn devi usare l'applet, compila il file così com'è

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    3
    ok, adesso funziona però non fa nessn tipo di conversione e quando clicco sul pulsante "converti" la finestra dos si riempie di righe di cui ignoro il significato.
    -ZuMBi-

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    se io mettevo dei numeri mi ritornava qualcosa, però nn ho controllato i calcoli perche nn saprei neanche da dove cominciare, io l'ho fatta solo partire... saranno errori postali...

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.