Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [Java] Problema con semplice applicazione

    Salve a tutti e grazie per l'attenzione. Un paio di giorni fa feci questa applicazione e mi partiva regolarmente ora ho riprovato e mi da circa 24 errori...In pratica ho creato una classe BubbSort che vi allego alla fine dopo l'applicazione principale e secondo me l'errore deve essere lì ma non riesco a capire dove sbaglio, mi sapreste aiutare??

    codice:
    import java.io.*;
    import javax.swing.*;
    
    public class esame {
    
    	public static void main(String args[]) throws IOException {  
    	
    		BufferedReader inserimento = new BufferedReader(new InputStreamReader(System.in));
    		
    		int numElem ;          	
    		int vettore[];
    		int counter = 0;      
    		int temp = 0;          
    		String inputBox;
    		String vet = "";
            BubbSort b = new BubbSort();
    		
    
    		
    		
    inputBox=JOptionPane.showInputDialog("Ciao da quanti elementi vuoi che sia composto il vettore da riordinare?");
    		if(inputBox == null) return;   
    
    		
    numElem = Integer.parseInt(inputBox); 
    		
    		
    vettore = new int[numElem]; 
    		
    		
    		for (int i = 0; i < vettore.length; i++) {   
    		counter = i + 1; 
    		
    		inputBox=JOptionPane.showInputDialog( nome + " Inserisci l'elemento " + counter + " di " + numElem); 
    
    			if(inputBox == null) return;
    			vettore[i] = Integer.parseInt(inputBox); 
    		}	   
    int returnVal = JOptionPane.showConfirmDialog(null, nome+ " Vuoi ordinare in maniera decrescente?" , "title", 
    				JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE); 
    				if(returnVal == JOptionPane.YES_OPTION) 
    				{ 
    				
    		ordine == < ;
    		b.BubbSort() ;
    				}else if(returnVal == JOptionPane.NO_OPTION){
    				
    ordine == >;
    b.BubbSort();
    }
    		
    		}
    	
    else return;
    
    		
    		for (int i=0; i<numElem; i++)
    		vet += vettore[i] + "  ";
    		
    		JOptionPane.showMessageDialog(null, nome + " ecco il vettore ordinato: " + vet); 
    	System.exit(1);
    	}

    codice:
    public class BubbSort {
    public BubbSort(){
    
    for (int i=0; i < numElem; i++) {
    			for (int j=0; j < numElem ; j++) {
    				if (vettore[i] ordine vettore [j]) {  
    					temp = vettore[i];
    					vettore[i]=vettore[j];
    					vettore[j]=temp;
    					
    				}
    			}
    		}
    		
    }
    }
    Vi Ringrazio per l'aiuto...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Bene... ma quali errori ottieni? E' obbligatorio specificarli, per aiutare i lettori ad individuarli nel tuo codice.

    Inoltre, un titolo un po' più specifico non sarebbe male, visto che il 100% (o quasi) delle discussioni presenti in questo forum riguarda "Problemi con (+ o -) semplici applicazioni".


    Correggo il titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Vi allego il file immagine del Prompt così potete leggere i primi errori, anche se io penso siano tutti legati ad un solo errore che non riesco a trovare....grazie..;-)
    Immagini allegate Immagini allegate

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... se non riesci a trovare l'errore nemmeno quando il compilatore ti dice esattamente su quale file e a quale riga è, allora non hai grandi speranze...


    codice:
    esame.java:44: illegal start of type
                   ordine == < ;
    (e seguenti)


    codice:
    import java.io.*;
    import javax.swing.*;
    
    public class esame {
    
    	public static void main(String args[]) throws IOException {  
    	
    		BufferedReader inserimento = new BufferedReader(new InputStreamReader(System.in));
    		
    		int numElem ;          	
    		int vettore[];
    		int counter = 0;      
    		int temp = 0;          
    		String inputBox;
    		String vet = "";
            BubbSort b = new BubbSort();
    		
    
    		
    		
    inputBox=JOptionPane.showInputDialog("Ciao da quanti elementi vuoi che sia composto il vettore da riordinare?");
    		if(inputBox == null) return;   
    
    		
    numElem = Integer.parseInt(inputBox); 
    		
    		
    vettore = new int[numElem]; 
    		
    		
    		for (int i = 0; i < vettore.length; i++) {   
    		counter = i + 1; 
    		
    		inputBox=JOptionPane.showInputDialog( nome + " Inserisci l'elemento " + counter + " di " + numElem); 
    
    			if(inputBox == null) return;
    			vettore[i] = Integer.parseInt(inputBox); 
    		}	   
    int returnVal = JOptionPane.showConfirmDialog(null, nome+ " Vuoi ordinare in maniera decrescente?" , "title", 
    				JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE); 
    				if(returnVal == JOptionPane.YES_OPTION) 
    				{ 
    				
    		ordine == < ;
    		b.BubbSort() ;
    				}else if(returnVal == JOptionPane.NO_OPTION){
    				
    ordine == >;
    b.BubbSort();
    }
    		
    		}
    	
    else return;
    
    		
    		for (int i=0; i<numElem; i++)
    		vet += vettore[i] + "  ";
    		
    		JOptionPane.showMessageDialog(null, nome + " ecco il vettore ordinato: " + vet); 
    	System.exit(1);
    	}
    Vedi righe in rosso... fammi indovinare: file esame.java, righe 44 e 48??


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    beh che l'errore era lì era chiaro...ma che errore c'è?? io sono alle prime armi con java e ho fatto questa applicazione prendendo spunti da vari programmini elementari...mi potresti aiutare a risolvere il problema??...a cosa è dovuto?? forse ho sbagliato qualcosa nel file BubbSort.java dove ho creato la mia classe BubbSort??...mi aiutate per piacere??...grazie...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Capisco essere alle prime armi con Java... ma qui si tratta di capire cosa intendi fare con quelle due "non-istruzioni" che hai scritto.

    Traduco in Italiano quello che hai scritto alla riga 44 del file esame.java (il file BubbSort non c'entra niente):

    Ordine uguale minore
    Ti sembra una istruzione che abbia un senso? Ti sembra una frase di senso compiuto?

    Al di là del fatto che non vedo dichiarato da nessuna parte una variabile chiamata "ordine", che quindi non si sa cosa sia, di che tipo sia e a cosa serva... ma qui non si tratta di essere alle prime armi, si tratta di conoscere almeno la sintassi del linguaggio: hai inserito un'istruzione utilizzando un operatore di confronto (senza nessun operatore di assgnazione), il cui secondo operando è un terzo operatore di confronto...

    Spiega almeno cosa volevi fare con quelle due righe che ho segnato.

    Per il resto, con l'istruzione successiva cerchi di richiamare il costruttore della classe BubbSort come se fosse un normale metodo... anche qui: non conosci affatto la programmazione ObjectOriented: il costruttore viene richiatamo automaticamente quando l'oggetto viene istanziato e non è richiamabile ulteriormente tramite l'operatore punto (.).


    Un consiglio: scaricati un manuale o comprane uno in libreria... se non si conoscono queste cose (almeno la sintassi) è perfettamente inutile venire a chiedere aiuto in un forum.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    beh forse hai ragione su molte cose, il mio intento era semplicemente dire:

    se ( returnVal== yes) allora sostituisci a "ordine" il simbolo "<" nella classe BubbSort e esegui il metodo che riordina il vettore altrimenti se ( returnVal== no) allora sostituisci a ordine il simbolo > ed riordina il vettore....come potrei fare??

    per quanto riguarda l'istruzione b.BubbSort(); ho letto su un manuale che si agisce così quando si vuole richiamare un metodo di una classe ed io volevo richiamare il metodo che mi riordina il vettore dopo aver assegnato il > o < al posto di ordine.

    come posso fare??....grazie e scusa ancora per il disturbo...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Con un volo pindarico sono riuscito a capire che per "ordine" tu intendi il tipo di ordinamento (crescente o decrescente, giusto)?

    Beh, la cosa non è così semplice: in nessun linguaggio di programmazione (o quasi) è possibile utilizzare una variabile da sostituire ad un operatore di confronto. Gli operatori di confronto sono solo quelli offerti dal linguaggio e non se ne possono inventare di nuovi. Quindi, se intendi modificare il tipo di ordinamento in base ad un tuo confronto, la cosa più semplice da fare è quella di scrivere due algoritmi differenti (uno per l'ordinamento crescente e uno per quello decrescente) e richiamare l'uno o l'altro in base al test.

    Fffiiuuuu... questa sì che si chiama "fanta-programmazione".

    Detto questo, procediamo con ordine:

    1) La classe BubbSort che hai scritto va radicalmente modificata (dopo vediamo nel dettaglio cosa volevi fare tu e cosa, invece, hai fatto)

    2) In base al test che hai scritto, dovrai richiamare un metodo di tale classe oppure l'altro.


    Prendiamo in esame la classe BubbSort. Quello che hai fatto tu (al di là della fanta-programmazione) è creare un costruttore di quella classe, non un semplice metodo. I metodi, in Java, hanno sempre un valore di ritorno. Se il metodo non deve tornare nulla, si impone come tipo di ritorno void. Se il metodo non ha alcun valore di ritorno, quel metodo è un costruttore e segue un vincolo molto rigido: il suo nome deve essere identico a quello della classe.

    Quello che devi fare tu, non è un costruttore. Tu dovrai scrivere due metodi distinti (che tornano void): uno ordina in modo crescente e l'altro in modo decrescente. Supponiamo che tu li chiami con questa firma:

    codice:
    public void ordinaCrescente(int[] vettore);
    public void ordinaDerescente(int[] vettore);
    Una volta implementati questi due metodi, nel file esame.java li richiamerai a seconda del risultato del test, in questo modo:

    codice:
    if(returnVal == JOptionPane.YES_OPTION)  { 
    
       b.ordinaCrescente( vettore ) ;
    
    } else {
    
       if(returnVal == JOptionPane.NO_OPTION) {
          b.ordinaDecrescente( vettore );
       }
    }
    Spero di aver fatto un po' di luce...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Allora mi è chiaro che non posso fare la fanta-programmazione che intendevo fare e stò seguendo i tuoi consigli. quindi ho creato la classe BubbSort e all'interno ho creato i due metodi come enunciato da te di cui in uno ho messo i cicli for con il > e nell'altro i cicli for con il <...ora nel mio programma esame devo comunque chiamare il costruttore:
    BubbSort b= new BubbSort() e poi inserire quelle righe che mi hai scritto tu ( i due cicli if)...giusto?? se è così mi da cmq errore...forse non dovevo prendere alla lettera i codici così come me li avevi scritti tu?? ...grazie per la disponibilità e la pazienza...;-)

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    I codici come li avevo scritti io andavano bene... a parte il punto e virgola alla fine dei metodi, che, ovviamente, vanno implementati normalmente:

    codice:
    public class BubbSort {
       public void ordinaCrescente(int[] vettore) {
          // ... qui ci va il codice di ordinamento crescente
       }
    
       public void ordinaDerescente(int[] vettore) {
          // ... qui ci va il codice di ordinamento decrescente
       }
    }
    La chiamata del costruttore va, ovviamente, fatta: quando si istanzia un oggetto si deve sempre e comunque richiamarne un costruttore. In questo caso viene richiamato il costruttore di default (quello senza parametri, che viene aggiunto automaticamente dal compilatore e che a noi, in questo momento, non serve).

    Bisogna vedere quali errori escono a questo punto, perchè potrebbero esserci altri errori che non ho considerato io in altre parti del codice (mi sono fermato lì a quelle due pseuso-istruzioni).


    Posta gli errori che vediamo come affrontarli.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.