Newsgroup: it.comp.java
Titolo: Errori in esecuzione

Ho implementato una classe di dati per una piccola gestione di conti
correnti. Vi faccio vedere il codice:
package mieclassi.prova;
public class ContiCorrenti {
 private double saldo;
 private double tassoAnnuale;
 public ContiCorrenti() {
  saldo=0;
  tassoAnnuale=0;
 }
 public void setContiCorrenti (double s,double t) {
  saldo=s;
  tassoAnnuale=t;
 }
   public ContiCorrenti (double s,double t) {
     setContiCorrenti(s,t);
   }
   public double getSaldo() { return saldo; }
 public double getTassoAnnuale() { return tassoAnnuale; }
 static public ContiCorrenti calculateMonthlyInterest (ContiCorrenti c) {
  double interesseMensile;
      ContiCorrenti d=new ContiCorrenti();
  interesseMensile=(c.saldo*((double)c.tassoAnnuale/100))/12;
  d.setContiCorrenti(c.saldo+interesseMensile,c.tassoAnnuale);
  return d;
 }
 static public ContiCorrenti modifyInterestRate (ContiCorrenti c,double n) {
      ContiCorrenti d=new ContiCorrenti();
  d.setContiCorrenti(c.saldo,c.tassoAnnuale+n);
  return d;
 }
 public String toString() {
  String out="";
  out+=Double.toString(saldo)+" euro"+tassoAnnuale+"%";
  return out;
 }
}
In seguito ho implementato un'applicazione per testare la mia nuova classe.
Ecco il codice:
import mieclassi.prova.ContiCorrenti;
import javax.swing.JOptionPane;
public class TestContiCorrenti {
 public static void main (String args[])
 {
  ContiCorrenti saver1=new ContiCorrenti(2000,4);
  ContiCorrenti saver2=new ContiCorrenti(3000,4);
  String output="";
  double n=1;
  ContiCorrenti saver3=new ContiCorrenti();
  ContiCorrenti saver4=new ContiCorrenti();
  saver3=ContiCorrenti.calculateMonthlyInterest(saver1);
  saver4=ContiCorrenti.calculateMonthlyInterest(saver2);
  output+="\nIl nuovo saldo per il primo correntista è: "+saver3;
  output+="\nIl nuovo saldo per il secondo correntista è: "+saver4;
  ContiCorrenti saver5=new ContiCorrenti();
  ContiCorrenti saver6=new ContiCorrenti();
  saver5=ContiCorrenti.modifyInterestRate(saver3,n);
  saver6=ContiCorrenti.modifyInterestRate(saver4,n);
  ContiCorrenti saver7=new ContiCorrenti();
  ContiCorrenti saver8=new ContiCorrenti();
  saver7=ContiCorrenti.calculateMonthlyInterest(saver5);
  saver8=ContiCorrenti.calculateMonthlyInterest(saver6);
  output+="\n\nIl nuovo saldo per il primo correntista è: "+saver1;
  output+="\nIl nuovo saldo per il secondo correntista è: "+saver2;
  JOptionPane.showMessageDialog(null,output,"Conti
Correnti",JOptionPane.INFORMATION_MESSAGE);
  System.exit(0);
 }
}
  Il problema è che quando compilo, il compilatore non mi da nessun errore.
Quando cerco di eseguire, invece, mi da un errore: Exception in thread
"main" java.lang.NoClassDefFoundError: mieclassi/prova/ContiCorrenti.
Di cosa si tratta? Forse la mia applicazione non riesce a trovare la classe
di dati?
Andrea.

 di dati?
dove si trova la classe ContiCorrenti?
dve essere mieclassi/prova/
e controlla di avere . nel classpath
ciao)o
--
Andrea
http://jame.sf.net

  static public ContiCorrenti modifyInterestRate (ContiCorrenti c,double n)
forse sarebbe meglio qualcosa del genere:
public ContiCorrenti calculateMonthlyInterest () 
public ContiCorrenti modifyInterestRate (double n)
in cui puoi fare side-effect o meno oppure secondo me ancora meglio sarebbe:
public void calculateMonthlyInterest () 
public void modifyInterestRate (double n)
che fanno side-effect.
Ma è solo la mia opinione ;)
Ciao
Matteo


Caro Matteo, anch'io la penso come te, non mi sembra molto corretto
utilizzare dei metodi statici, ma il mio professore (universitario) non la
pensa cosě. In ogni caso, il compilatore non si lamenta di questo, quindi
perchč non utilizzarli?
Andrea

 Andrea
La classe "ContiCorrenti" si trova in
"c:\jdk1.2.1\jre\classes\mieclassi\prova" e quando la compilo utilizzo
questa riga di comando: "javac -d c:\jdk1.2.1\jre\classes
ContiCorrenti.java".
Il puntino c'č.
Non capisco proprio dove sia l'errore!!!!

 - Dario -
Caro Signor Dario,
non per vena polemica, ma credo che non siano affari suoi, a meno che non mi
dia una giustificazione plausibile per le sue richieste.
Senza rancore.
Andrea :-)

 questa riga di comando: "javac -d c:\jdk1.2.1\jre\classes
javac -d c:\jdk1.2.1\jre\classes\mieclassi\prova ContiCorrenti.java
javac -classpath c:\jdk1.2.1\jre\classes TestContiCorrenti.java


 questa riga di comando: "javac -d c:\jdk1.2.1\jre\classes
javac -d c:\jdk1.2.1\jre\classes ContiCorrenti.java
javac -classpath c:\jdk1.2.1\jre\classes TestContiCorrenti.java
java -classpath c:\jdk1.2.1\jre\classes;. TestContiCorrenti


 javac -classpath c:\jdk1.2.1\jre\classes TestContiCorrenti.java
questo m'è partito per sbaglio

 Senza rancore.
Senza rancore.


 "main" java.lang.NoClassDefFoundError: mieclassi/prova/ContiCorrenti.
http://space.tin.it/computer/csadun/javafaq.html
-- 
Fighting for peace is like fucking for virginity
ObjectZone - 
http://space.tin.it/computer/csadun

 perchè non utilizzarli?
Perché se facessi tutto quello di cui il compilatore non si lamenta il mio
software farebbe parecchio schifo.
Secondo me, che non sono nessuno, per carità.
Ciao
Matteo