Salve..
il seguente programma compila,ma crea subito l'eccezione:
java.lang.NoSuchMethodError:main
Exception in thread "main">Exit Code: 1
Il codice è questo:
qualcuno di buona volontà potrebbe dirmi in cosa consiste questa eccezione e come posso risolverla?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; } }
GRAZIE

Rispondi quotando
