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

    [java]Il mio primo programma...

    Salve a tutti,
    questo è il mio primo approccio al java....anzi il secondo dato ke il primo è stato il mitico "Hello World!", diciamo ke è la prima applet!
    Vorrei sapere se è scritto in modo corretto, non voglio sapere se funziona o meno, xkè già l'ho testato e funziona, ma sapere se il modo in cui l'ho stilato è giusto.
    Se nn lo fosse mi piacerebbe sapere come trasformereste questo codice e renderlo corretto.
    Vi ringrazio tutti anticipatamente e speriamo ke questo linguaggio nn mi faccia perdere i capelli!!!!!!!!!!!!!!!
    Ecco il codice:

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    public class Grafic extends Applet {
    	double a,b;
    	String segno;
    	boolean flag_segno=false;
    	TextField testo=new  TextField(150);
    	Button pul0=new  Button("0");
        Button pul1=new  Button("1");
        Button pul2=new  Button("2");
        Button pul3=new  Button("3");
        Button pul4=new  Button("4");
        Button pul5=new  Button("5");
        Button pul6=new  Button("6");
        Button pul7=new  Button("7");
        Button pul8=new  Button("8");
        Button pul9=new  Button("9"); 
    public void init() {
    	setLayout(null);
        Button pulVirgola=new  Button(".");
        Button pulUguale=new Button("=");
        Button pulPiu=new Button("+");
        Button pulMeno=new Button("-");
        Button pulPer=new Button("*");
        Button pulDiviso=new Button("/");
        testo.reshape(50,20,150,20);
        pul1.reshape(60,60,20,20);
        pul2.reshape(80,60,20,20);
        pul3.reshape(100,60,20,20);
        pul4.reshape(60,80,20,20);
        pul5.reshape(80,80,20,20);
        pul6.reshape(100,80,20,20);
        pul7.reshape(60,100,20,20);
        pul8.reshape(80,100,20,20);
        pul9.reshape(100,100,20,20);
        pul0.reshape(60,120,20,20);
        pulVirgola.reshape(80,120,20,20);
        pulUguale.reshape(100,120,20,20);
        pulPiu.reshape(125,60,20,20);
        pulMeno.reshape(125,80,20,20);
        pulPer.reshape(125,100,20,20);
        pulDiviso.reshape(125,120,20,20);
        add(testo);
        add(pul0);
        add(pul1);
        add(pul2);
        add(pul3);
        add(pul4);
        add(pul5);
        add(pul6);
        add(pul7);
        add(pul8);
        add(pul9);
        add(pulVirgola);
        add(pulUguale);
        add(pulPiu);
        add(pulMeno);
        add(pulPer);
        add(pulDiviso);
        
    }
    public boolean action(Event ev, Object arg) {
    	String p_click=arg.toString();
    	if(p_click!="+" && p_click!="-" && p_click!="*" && p_click!="/" && p_click!="="){
    		
    		if(flag_segno==true)
    		{
    			testo.setText("");
    			flag_segno=false;
    		}
    		testo.setText(testo.getText()+arg.toString());	
    		b=Double.parseDouble(testo.getText());
    	}
    	
    	
    	if(p_click=="+"||p_click=="-"||p_click=="*"||p_click=="/"){
    		if(flag_segno==false){
    		if(segno=="+"){	testo.setText(Double.toString(a+b));}
    		if(segno=="-"){	testo.setText(Double.toString(a-b));}
    		if(segno=="*"){	testo.setText(Double.toString(a*b));}
    		if(segno=="/"){	testo.setText(Double.toString(a/b));}
    		segno=p_click;
    		a=Double.parseDouble(testo.getText());
    		flag_segno=true;
    		}
    	
    	}
    	if(p_click=="="){
    		if(segno=="+"){	testo.setText(Double.toString(a+b));}
    		if(segno=="-"){	testo.setText(Double.toString(a-b));}
    		if(segno=="*"){	testo.setText(Double.toString(a*b));}
    		if(segno=="/"){	testo.setText(Double.toString(a/b));}
    		a=Double.parseDouble(testo.getText());
    		flag_segno=true;	
    	}
    	 	
    	 	return true;
    }
    }

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

    Re: [java]Il mio primo programma...

    Originariamente inviato da carmineabomb
    Vorrei sapere se è scritto in modo corretto, non voglio sapere se funziona o meno, xkè già l'ho testato e funziona, ma sapere se il modo in cui l'ho stilato è giusto.
    Ciao, il fatto è che hai usato dei metodi "deprecati". Mi riferisco ai metodi reshape() e action(). Un metodo "deprecato" è un metodo obsoleto che non si dovrebbe più usare. Quindi al posto di reshape() dovresti usare setBounds() e al posto di action() dovresti implementare l'interfaccia ActionListener per ricevere gli eventi.

    Come altre possibili migliorie, puoi usare un layout manager per disporre i componenti e poi puoi usare Swing invece di AWT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    invece di usare 50mila bottoni separati, usa un vettore!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    Originariamente inviato da Alex'87
    invece di usare 50mila bottoni separati, usa un vettore!
    basta anche un ciclo for... e li aggiungi subito dopo creati risparmiando righe e righr

    codice:
    Button[] pul=new Button[10]
    for (int i=0; i<pul.length; i++) {
           pul[i]=new Button(i);
           add(pul[i]);
    }

  5. #5
    Lasciamo stare i metodi absoleti dato che per ora devo capire solo la sintassi del linguaggio, poi man mano andrò alla scoperta di nuove classi.
    Molto interessante, invece, il fatto che si può creare un'array per ogni tipo.
    Quindi ho trasformato la parte che mi crea i pulsanti in questo modo:
    (le modifiche sono in grassetto)
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    public class Grafic extends Applet {
    	double a,b;
    	String segno;
    	boolean flag_segno=false;
    	TextField testo=new  TextField(150);
    	int x=60;
    	int y=60;
    	String[] car={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/"};
    public void init() {
    	setLayout(null);
    	Button[] pul=new Button[car.length];
    	for (int i=0; i<pul.length; i++) {
           pul[i]=new Button(car[i]);
           pul[i].reshape(x,y,20,20);
           add(pul[i]);
           x+=20;
           if(x>120){
           	y+=20;
           	x=60;
           }
    }
        testo.reshape(50,20,150,20);
        add(testo);
        
    }
    public boolean action(Event ev, Object arg) {
    	String p_click=arg.toString();
    	if(p_click!="+" && p_click!="-" && p_click!="*" && p_click!="/" && p_click!="="){
    		
    		if(flag_segno==true)
    		{
    			testo.setText("");
    			flag_segno=false;
    		}
    		testo.setText(testo.getText()+arg.toString());	
    		b=Double.parseDouble(testo.getText());
    	}
    	
    	
    	if(p_click=="+"||p_click=="-"||p_click=="*"||p_click=="/"){
    		if(flag_segno==false){
    		if(segno=="+"){	testo.setText(Double.toString(a+b));}
    		if(segno=="-"){	testo.setText(Double.toString(a-b));}
    		if(segno=="*"){	testo.setText(Double.toString(a*b));}
    		if(segno=="/"){	testo.setText(Double.toString(a/b));}
    		segno=p_click;
    		a=Double.parseDouble(testo.getText());
    		flag_segno=true;
    		}
    	
    	}
    	if(p_click=="="){
    		if(segno=="+"){	testo.setText(Double.toString(a+b));}
    		if(segno=="-"){	testo.setText(Double.toString(a-b));}
    		if(segno=="*"){	testo.setText(Double.toString(a*b));}
    		if(segno=="/"){	testo.setText(Double.toString(a/b));}
    		a=Double.parseDouble(testo.getText());
    		flag_segno=true;	
    	}
    	 	
    	 	return true;
    }
    }
    Una cosa m'è poco kiara......sulle varie guide ho letto ke il metodo main non può mancare affinchè il programma inizi la sua esecuzione....come mai ho omesso il metodo main e il programma parte lo stesso??ki è ke istanzia la classe Grafic?Forse il metodo init fa parte della libreria applet e funziona +O- come il main?
    Cmq riscriverò il tutto, ho notato ke non ho sfruttato al massimo le potenzialità che offre l'oop......al mio risveglio!!!
    Java mi sta appassionando!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da carmineabomb
    Una cosa m'è poco kiara......sulle varie guide ho letto ke il metodo main non può mancare affinchè il programma inizi la sua esecuzione....come mai ho omesso il metodo main e il programma parte lo stesso??ki è ke istanzia la classe Grafic?Forse il metodo init fa parte della libreria applet e funziona +O- come il main?
    Allora devi prima capire la differenza tra una applicazione e una applet.

    Una applicazione Java si lancia invocando il run-time di Java cioè il tool java (o javaw su Windows). Invocando ad esempio java MiaClasse, il run-time si aspetta di trovare in quella classe un metodo dichiarato public e static denominato main in cui far partire il "main thread".

    Una applet è una classe che deriva da Applet (o JApplet per Swing) e che viene invocata da un "contenitore" per applet Java disponibile nel browser. In questo caso, non serve il metodo main(). Questo "contenitore" (che si chiama sandbox) crea una istanza della classe indicata nel tag <applet> e chiama i metodi init() e start() per avviare la applet e poi alla fine stop() e destroy() per terminarla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.