Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2008, 17:52   #1
cavalieredimarte
Junior Member
 
Iscritto dal: Jun 2008
Messaggi: 4
[JAVA] quesiti sui sorgenti

Salve a tutti!
In preparazione di un test su java mi sono creato un piccolo esercizio x tenermi in allenamento con la programmazione....

Praticamente si ha una un base (classe Station) ke contiene un ArrayList di calcolatori (classe Calcolatore) i quali svolgono funzioni matematiche elementari, il tutto corredato da una piccola interfaccia grafica.
Posto innanzi tutto i sorgenti:


public class Calcolatore implements Serializable {
private String nome;
private int primo;
private int secondo;
private int terzo;
private static final long serialVersionUID=45L;
public Calcolatore (int primo, int secondo,int terzo,String nome)
{
this.primo=primo;
this.secondo=secondo;
this.terzo=terzo;
this.nome=nome;

}

public void sommaFile() throws IOException
{
FileWriter w;
w =new FileWriter("add.txt");
int a;
a=primo+secondo+terzo;
String ris= "Risultato somma: " +a;
w.write(ris);
w.flush();
w.close();

}


public String comparaNum(int a, int b)

{
if (a==b) return("I valori sono uguali");
else return("I valori sono diversi");
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public int getPrimo() {
return primo;
}

public void setPrimo(int primo) {
this.primo = primo;
}

public int getSecondo() {
return secondo;
}

public void setSecondo(int secondo) {
this.secondo = secondo;
}

public int getTerzo() {
return terzo;
}

public void setTerzo(int terzo) {
this.terzo = terzo;
}



public String toString()
{
return "NOME: " + nome + " PRIMO: "+ primo + " SECONDO: "+ secondo + " TERZO: " + terzo;
}



}



public class Station implements Serializable,Cloneable {
private int code;
private String name;
private static final long serialVersionUID=8L;
ArrayList <Calcolatore> cellula =new ArrayList<Calcolatore>();


public Station (int code, String name)
{
this.code=code;
this.name=name;
}



public int getCode() {
return code;
}



public void setCode(int code) {
this.code = code;
}



public String getName() {
return name;
}



public void setName(String name) {
this.name = name;
}

public void aggiungiCalc(int primo,int secondo,int terzo,String nome)
{
Calcolatore alpha=new Calcolatore(primo,secondo,terzo,nome);
cellula.add(alpha);

}

public void printer ()
{
for (Calcolatore k:cellula)
System.out.println(k);
}


public Object clone()
{
try {

Station clonato= (Station) super.clone();
clonato.cellula=((ArrayList<Calcolatore> )cellula.clone());
return clonato;
}
catch (CloneNotSupportedException r){return null;}



}

public void remove(int i)
{
cellula.remove(i);
}

public void SUM(int i) throws IOException
{
cellula.get(i).sommaFile();
}

}


public class MyFrame extends JFrame implements ActionListener {

ImageIcon ok=new ImageIcon("prova.gif");
JButton dentro = new JButton("carica");
JButton confronta = new JButton("Confronta");
JButton stampa = new JButton("Stampa");
JButton deser = new JButton("Deserializza");
JButton ser = new JButton("Serializza");
JTextField uno = new JTextField("0",5);
JTextField due = new JTextField("0",5);
JTextField del = new JTextField("0",5);
JTextField sum = new JTextField("0",5);
JTextField addname = new JTextField(5);
JTextField addfirst = new JTextField("0",5);
JTextField addsecond= new JTextField("0",5);
JTextField addterzo = new JTextField("0",5);
JLabel r=new JLabel ("Risultato: \r\n\r\n");
JLabel con=new JLabel ("--> Comparazione < --");

public MyFrame(){
super("NASA CALCULATOR");
Container c=getContentPane();

setSize(555,555);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pan=new JPanel();
JPanel pan2=new JPanel();
JPanel pan3=new JPanel();
JPanel pan4=new JPanel();
pan4.setVisible(false);
c.setLayout(new BorderLayout());
c.add(pan,BorderLayout.NORTH);
c.add(pan2,BorderLayout.WEST);
c.add(pan3,BorderLayout.SOUTH);


pan2.setLayout(new GridLayout (1,2));
pan.add(dentro);
pan.add(sum);
pan2.add(ser);
pan3.add(stampa);
pan3.add(deser);
pan3.add(del);
deser.addActionListener(this);
ser.addActionListener(this);
dentro.addActionListener(this);
stampa.addActionListener(this);
pack();
setVisible(true);

/*try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception j) {System.out.println("Errore");}
}
*/
}



public void actionPerformed(ActionEvent ev)
{
Station orchidea=new Station(9876,"Orchidea_STAT");
orchidea.aggiungiCalc(34, 90, 8, "NASA1");
orchidea.aggiungiCalc(1, 2, 3, "NASA2");
Object puls=ev.getSource();





//orchidea.aggiungiCalc(12, 5, 8, "NASA2");
//orchidea.aggiungiCalc(44, 7, 8, "NASA3");
//Calcolatore k=new Calcolatore (6,5,11,"NASAONE");



/*if (puls==somma){
String cap=sum.getText();
int n=Integer.parseInt(cap);
try {orchidea.SUM(n);
JOptionPane.showMessageDialog(null,"File add.txt generato con successo!!");}
catch (IOException e){System.out.println("Intercettata eccezione: ");}
}*/


if (puls==dentro)
{


//orchidea.aggiungiCalc(12, 5, 8, "NASA2");
orchidea.aggiungiCalc(44, 7, 8, "NASA3");
System.out.println("Oggetti inseriti");

}

if (puls==stampa)
{
orchidea.printer();

}




if (puls==ser)
{

FileOutputStream f =null;
ObjectOutputStream o=null;


try{
f= new FileOutputStream ("save.bin");
o=new ObjectOutputStream(f);
}
catch(IOException k ){System.out.println("Intercettata eccezione: ");}

try{
o.writeObject(orchidea);
o.close();

}

catch(IOException k ){System.out.println("azzz");}
System.exit(1);
}


if (puls==deser)
{

FileInputStream f =null;
ObjectInputStream o=null;


try{
f= new FileInputStream ("save.bin");
o=new ObjectInputStream(f);
Station ok=(Station) o.readObject();
o.close();
ok.printer();
}


catch(InvalidClassException k2 ){System.out.println("Porc1");}
catch(IOException k3 ){System.out.println("Porc2");}
catch(ClassNotFoundException k4 ){System.out.println("Porc3");}

}

}

}



public class Programma {
public static void main (String [] args)
{


MyFrame f= new MyFrame();

}
}




LE MIE DOMANDE SONO:

1) Nella classe myFrame, la funzione dentro "Dovrebbe" caricarmi nell'arraylist un nuovo calcolatore ivece... non lo fa!!! se invece metto la funzione aggiungiCalc come all'inizio della classe viene aggiunto correttamente!!! Sapete dirmi come mai la funzione dentro non mi carica un tubo??

2) X esercitarmi su un interfaccia clonable ho provveduto ad implementarla per clonare una nuova stazione, sapete dirmi se semanticamente è giusta la mia rodefinizione di object.clone()??

Vi ringrazio infinitamenet per le vostre risposte!
cavalieredimarte è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2008, 10:48   #2
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da cavalieredimarte Guarda i messaggi
Salve a tutti!
In preparazione di un test su java mi sono creato un piccolo esercizio x tenermi in allenamento con la programmazione....

Praticamente si ha una un base (classe Station) ke contiene un ArrayList di calcolatori (classe Calcolatore) i quali svolgono funzioni matematiche elementari, il tutto corredato da una piccola interfaccia grafica.
Posto innanzi tutto i sorgenti:

[CUT]

LE MIE DOMANDE SONO:

1) Nella classe myFrame, la funzione dentro "Dovrebbe" caricarmi nell'arraylist un nuovo calcolatore ivece... non lo fa!!! se invece metto la funzione aggiungiCalc come all'inizio della classe viene aggiunto correttamente!!! Sapete dirmi come mai la funzione dentro non mi carica un tubo??

2) X esercitarmi su un interfaccia clonable ho provveduto ad implementarla per clonare una nuova stazione, sapete dirmi se semanticamente è giusta la mia rodefinizione di object.clone()??

Vi ringrazio infinitamenet per le vostre risposte!
Allora, innanzitutto, per favore usa il tag CODE quando posti del codice, lo rende più leggibile.

Quanto alle tue domande, mi sembra che ci sia un'errore concettuale nell'implementazione del metodo listener nella classe myFrame: ad ogni chiamata la Station "orchidea" viene ricreata ex-novo, sovrascivendo il riferimento a quella precedente, quindi l'elemento viene effettivamente aggiunto quando fai:

Codice:
orchidea.aggiungiCalc(44, 7, 8, "NASA3");
Però al giro successivo (quando usi un'altro bottone, per esempio) perderai tutte le modifiche. Il codice che crea la Station orchidea andrebbe spostato in una parte della classe che chiami una volta sola, per esempio nel costruttore.

Quanto alla tua seconda domanda, non saprei: a me sembra che tu cerchi di creare una "depth-copy" della tua classe "clonando" anche il suo attributo "cellula": se questo ti basta, dovresti essere a posto...
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2008, 10:30   #3
cavalieredimarte
Junior Member
 
Iscritto dal: Jun 2008
Messaggi: 4
Grazie mille, ho seguito le tue dritte e funzia alla perfezione!
cavalieredimarte è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
AMD: l'alternativa al DLSS 5 sarebbe in ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v