Salve..
il seguente programma compila,ma crea subito l'eccezione:
java.lang.NoSuchMethodError:main
Exception in thread "main">Exit Code: 1
Il codice è questo:
codice:
//Scrivere un programma Java che generi a caso un significativo numero di espressioni e li conservi
// in un file di oggetti
import java.io.*;
public class progProva
{
public void main(String [] args) throws IOException
{
/*
Scrivere un programma JAVA che generi a caso un significativo numero di espressioni e li conservi in un file di oggetti
*/
String nomeFile = "FileContenenteEspressioni.dat";
scriviFile(nomeFile);
}
//Questo è il metodo utilizzato per scrivere le espressioni nel file, il numero di espressioni è casuale
public void scriviFile(String nomeFile) throws IOException
{
ObjectOutputStream Oout;//creiamo il file di output che contiene le espressioni aritmetiche in forma infissa
try
{
Oout = new ObjectOutputStream (new FileOutputStream (nomeFile));
}
catch(IOException e)
{
System.out.println("Si è verificato L'errore: "+e);
return;
}
int numeroEspressioni = (int)(Math.random()*(100))/*+min*/; //generiamo casualmente il numero di espressioni
espressioneInfissa exp = null;
String stringaExp = "";
for(int i=0; i<numeroEspressioni; i++)//leggendo il numero di espressioni
{
stringaExp = generaEspressioni(numeroEspressioni);//richiamiamo il metodo ricorsivo per generare le espressioni in forma infissa
exp = new espressioneInfissa(stringaExp);
try
{
Oout.writeObject(exp);//scriviamo nel file le espressioni infisse
}
catch(IOException e)
{
System.out.println ("Scrittura file eseguita "+e);
}
}
Oout.close();//chiudiamo il file delle espressioni
}
//Questo è il metodo usato per generare a caso espressioni di forma Infissa
public static String generaEspressioni(int numeroEspressioni) //throws NoClassDefFoundError
{
String espressione = "";
espressione = generaEspressioniAux(espressione, numeroEspressioni);
System.out.println("Espressione:\t"+espressione);
return espressione;
}
//Con questo metodo che viene chiamato ricorsivamente formo le espressioni
public static String generaEspressioniAux(String s, int numeroEspressioni)
{
s += '(';
char [] Operandi = {'+', '-', '/', '*'};
int caso = (int)(Math.random()*100);
int maxNumExp=numeroEspressioni;
System.out.println("Espressioni da creare:"+maxNumExp);
//Uso delle percentuali diverse nei vari casi per evitare che vengano espressioni troppo lunghe
//Ovviamente potrei usare diverse percentuali per cercare di influenzare un po la lunghezza dell'espressione.
for(int i=maxNumExp; i<numeroEspressioni; i--)
{
if(maxNumExp!=0)
{
if(caso < 40)
{
//System.out.println ("uno");
s += (int)(Math.random()*100);
s += Operandi[(int)(Math.random()*Operandi.length)];
s += (int)(Math.random()*100);
//System.out.println(s);
maxNumExp--;
}
else if(caso <60)
{
//System.out.println ("due");
s += (int)(Math.random()*100);
s += Operandi[(int)(Math.random()*Operandi.length)];
s = generaEspressioniAux(s, numeroEspressioni);
maxNumExp--;
}
else if(caso < 85)
{
//System.out.println ("tre");
s = generaEspressioniAux(s, numeroEspressioni);
s += Operandi[(int)(Math.random()*Operandi.length)];
s += (int)(Math.random()*100);
maxNumExp--;
}
else
{
//System.out.println ("quattro");
s = generaEspressioniAux(s, numeroEspressioni);
s += Operandi[(int)(Math.random()*Operandi.length)];
s = generaEspressioniAux(s, numeroEspressioni);
maxNumExp--;
}
s += ')';
}
}
return s;
}
}
qualcuno di buona volontà potrebbe dirmi in cosa consiste questa eccezione e come posso risolverla?
GRAZIE