Esercizio di programmazione Java con array

di il
28 risposte

Esercizio di programmazione Java con array

Salve a tutti, sono nuovo del forum e solo da poco ho iniziato a fare degli esercizi di programmazione Java. Vi chiedo se qualcuno possa darmi una mano col seguente: <<Scrivere il programma Cerca che crea e inizializza un array di int contenete 10 valori a
piacere (usando il comando di inizializzazione che prevede la lista dei valori tra parentesi graffe), chiede
all’utente di inserire un numero e stampa Presente se il numero `e presente nell’array, oppure Assente
se il numero non `e presente. Provare a risolvere questo tramite un for-each.>>
Io riesco a far capire al programma, tramite un if posto dopo il for-each se quel numero è presente, il punto è che mi stampa a ciclo tutti i risultati. Mi spiego meglio: se imposto il for each così:" for (int i: numeri)" (numeri è il nome che ho dato all'array) e se metto come guardia dell'if" (n==i)" (n è la variabile di input dello scanner). Il programma mi stampa tutti i risultati "Presente" o "assente" consecutivamente, ad esempio: "assente, assente, assente, presente, assente, assente, assente, assente, assente, assente". (nel caso in cui l'elemento digitato corrispondesse al numero che si trova in posizione 3 dell'array).
Credo che l'errore stia nella guardia dell'if, ma se provo ad impostare "if ( n==numeri)" il sistema va in errore e certi numeri li valuta, altri no. Potreste aiutarmi a capire qual è l'errore? Grazie in anticipo.

28 Risposte

  • Re: Esercizio di programmazione Java con array

    Posta il codice appositamente dentro i tag CODE.

    ... e poi come fa una spiegazione del codice ad essere più chiara del codice stesso per un problema di base?
  • Re: Esercizio di programmazione Java con array

    import java. util. Scanner;
    public class Cerca {
    
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		
    		int []numeri=  {3, 4, 6, 75, -32, -3, 78, 21, 46, 89};
    		System.out.println("Inserisci un numero");
    		int n=input.nextInt();
    		
    	
    		for (int i: numeri) {
    		
    		if (i==n) 
    		
    		
    				System.out.println("Presente");
    		else 
    			System.out.println("Assente");
    		input.close();
    		}
    Questo è il codice che riporta il problema di cui ho parlato sopra.
  • Re: Esercizio di programmazione Java con array

    ytreka ha scritto:


    Questo è il codice che riporta il problema di cui ho parlato sopra.
    È abbastanza ovvio/naturale che con un if-else così stampi tanti Assente e (potenzialmente) un Presente.

    Se non vuoi così, basta cambiare logica. Basta tenere una variabile booleana "trovato" inizialmente a false. Se trovi il valore la metti a true. Poi DOPO il for puoi stampare una volta sola se assente o presente.
  • Re: Esercizio di programmazione Java con array

    Input.close() dentro il for a che serve?
    Il break lo conosci?
  • Re: Esercizio di programmazione Java con array

    Il break l'abbiamo utilizzato solo all'interno dello switch...Per il resto il prof. non ce ne ha parlato. Comunque non riesco a chiudere il for prima della guardia dell'if perchè non trova la variabile "trovato".
  • Re: Esercizio di programmazione Java con array

    Posta il codice... e due

    È un problema che avresti anche con il for semplice
  • Re: Esercizio di programmazione Java con array

    ytreka ha scritto:


    Il break l'abbiamo utilizzato solo all'interno dello switch...Per il resto il prof. non ce ne ha parlato. Comunque non riesco a chiudere il for prima della guardia dell'if perchè non trova la variabile "trovato".
    Il close nel for è chiaramente scorretto. Non servirebbe nemmeno visto che "sotto" c'è System.in

    E la variabile trovato la devi definire tu PRIMA del for.
  • Re: Esercizio di programmazione Java con array

    import java. util. Scanner;
    public class Cerca {
    
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		
    		int []numeri=  {3, 4, 6, 75, -32, -3, 78, 21, 46, 89};
    		System.out.println("Inserisci un numero");
    		int n=input.nextInt();
    		boolean trovato;
    		for (int i: numeri) {
    			trovato= n==i;
    		}
    		    
    			if (trovato=true) {
    				System.out.println("Presente");
    			}
    			else {
    		
    			
    			   System.out.println("Assente");
    		
    			}		
    	
    		
    	  }
    }
    Il problema della ripetizione dei risultati ciclici con questo codice è superato. Adesso però riscontro un altro problema: anche se inserisco numeri non presenti nell'array, mi stampa "Presente". Comunque sì, la parte sui cicli mi sta venendo abbastanza ostica, sia che si tratti di for-each, while o di for semplice.
  • Re: Esercizio di programmazione Java con array

    Non fai quello che ti è stato detto con la variabile trovato prima e durante il ciclo. E non la confronti correttamente dopo.
  • Re: Esercizio di programmazione Java con array

    import java. util. Scanner;
    public class Cerca {
    
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		
    		int []numeri=  {3, 4, 6, 75, -32, -3, 78, 21, 46, 89};
    		System.out.println("Inserisci un numero");
    		int n=input.nextInt();
    		boolean trovato;
    		for (int i: numeri) {
    			if (n==i) {
    				trovato=true;
    			}
    				else 
    				trovato=false;
    			}
    			
    		
    		    if (trovato=true) {
    			
    				System.out.println("Presente");
    		    }
    			else 
    				System.out.println("Assente");	
    					
        }
    }
    
    Con questo codice stesso problema.
  • Re: Esercizio di programmazione Java con array

    Non hai capito... la else non ha senso, eliminarla

    E controlla bene la if finale
  • Re: Esercizio di programmazione Java con array

    Ma è un problema di parentesi graffe? Ti riferisci agli entrambi gli else o solo a quello iniziale? Se tolgo l'else finale, mi stampa entrambi i risultati.
  • Re: Esercizio di programmazione Java con array

    ==
  • Re: Esercizio di programmazione Java con array

    ytreka ha scritto:


    Ma è un problema di parentesi graffe? Ti riferisci agli entrambi gli else o solo a quello iniziale? Se tolgo l'else finale, mi stampa entrambi i risultati.
    Ascolta:
    1) dichiari una variabile boolean "trovato" inizialmente a false (la DEVI inizializzare).
    2) ciclo for, con dentro: se il valore è quello richiesto, e solo in quel caso, metti la variabile a true (non serve alcun else)
    3) dopo il for puoi testare "trovato" e dare il risultato.
Devi accedere o registrarti per scrivere nel forum
28 risposte