Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131

    Stampare il risultato in una finestra

    Salve a tutti,
    sono alle prime armi, stavo svolgendo un semplice esercizio che faceva la somma di due numeri. Utilizzando eclipse il risultato compare correttamente nella console.Il problema è che ora mi sono creato una finestra e non capisco come stampare quel risultato come argomento della finestra...cosa sbaglio?
    Posto prima il codice della classe somma

    codice:
    package elementiBase;
    
    public class SommaNumeri {
    
    	public int a , b ;
    	public int c;
    
    	
    	
    	public void Somma (){
    		
    		c = a+b;
    		
    		System.out.println("la somma tra i due numeri è :"+c);
    				
    	}
    	
    }

    e ora volevo che mi uscisse il risultato del metodo somma in questa finestra

    codice:
    package Grafica;
    
    import javax.swing.*;   
    
    import java.awt.*;
    
    import TestSommaNumeri.TestSomma;
    import elementiBase.SommaNumeri;
    
    public class Finestra   {
    
    	public static void main(String args[])
    	{
    	JFrame win;
    	win = new JFrame("Somma tra due numeri");
    	
    	Container c = win.getContentPane();
    	TestSomma num = new TestSomma();
    	c.add(new JLabel(num.Somma()));
    	
    
    	win.setSize(200,200);         
    	win.setDefaultCloseOperation
    	(JFrame.EXIT_ON_CLOSE);      
    	win.setVisible(true);
    	}
    
    	}

    mi da errore alla riga c.add(new JLabel(num.Somma())); come posso sistemare...grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Stampare il risultato in una finestra

    Tralasciamo il fatto che le due variabili che usi per fare la somma non sono mai inizializzate...

    Originariamente inviato da vide91

    codice:
     
    	c.add(new JLabel(num.Somma()));

    mi da errore alla riga c.add(new JLabel(num.Somma())); come posso sistemare...grazie
    Somma() è un metodo void, non restituisce nulla. Dovrebbe essere una cosa del genere:

    codice:
    public int somma() {
        return a + b;
    }
    Inoltre il costruttore principale di JLabel vuole una stringa. Quindi:
    codice:
    c.add(new JLabel("" + num.somma()));
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    131
    grazie per la risposta, ho modificato in questo modo ma ancora mi da errore

    codice:
    package elementiBase;
    
    public class SommaNumeri {
    
    	public int a , b ;
    
    	public int result;
    	
    	public int Somma() {
    	result=a+b;
    		
    	return result;
    				
    	}
    	
    }


    codice:
    package Grafica;
    
    import javax.swing.*;   
    
    import java.awt.*;
    
    import TestSommaNumeri.TestSomma;
    import elementiBase.SommaNumeri;
    
    public class Finestra   {
    
    	public static void main(String args[])
    	{
    	JFrame win;
    	win = new JFrame("Somma tra due numeri");
    	
    	Container c = win.getContentPane();
    	TestSomma ts= new TestSomma();
    	c.add(new JLabel(" " +ts.Somma()));
    	
    
    	win.setSize(200,200);     
    	win.setDefaultCloseOperation
    	(JFrame.EXIT_ON_CLOSE); 
    	win.setVisible(true);
    	}
    
    	}

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ma la classe col metodo Somma è SommaNumeri o TestSomma? Guarda bene quello che hai scritto...

    Permettimi inoltre alcune considerazioni sulla classe SommaNumeri.

    Gli attributi sono pubblici: errore gravissimo! Gli attributi DEVONO essere privati/protected, con appositi getter e setter. Questo per garantire la consistenza degli oggetti creati. In questo caso non cambia poi molto, la tua classe è molto semplice, ma in classi più elaborate può essere cruciale qualche controllo.

    Inoltre ancora non inizializzi a e b, il risultato sarà sempre zero. result poi è completamente inutile.

    Un paio di varianti possibili:

    1.
    codice:
    public class SommaNumeri {
    
    	private int a;
    
    	private int b;
     	
    	public int somma() {
    		return a + b;
    	}
    	
    	public int getA() {
    		return a;
    	}
    	
    	public void setA(int a) {
    		this.a = a;
    	}
    	
    	public int getB() {
    		return b;
    	}
    	
    	public void setB(int b) {
    		this.b = b;
    	}
    	
    }
    
    ...
        SommaNumeri sn = new SommaNumeri();ù
        sn.setA(10);
        sn.setB(15);
    
        c.add(new JLabel("" + sn.somma()));
    ...
    2.
    codice:
    public class SommaNumeri {
     
     	
    	public static int somma(int a, int b) {
    		return a + b;
    	}
    	  
    }
    
    ...
        c.add(new JLabel("" + SommaNumeri.somma(10, 15)));
    ...
    sto aspettando per uscire, ora non ho un cavolo da fare XD
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.