Esercizio Array Java - Problema

di il
3 risposte

Esercizio Array Java - Problema

Salve a tutti! Sono un noob della programmazione e sto studiando Java sostanzialmente perché devo sostenere l'esame di Fondamenti di Informatica, ma ho intenzione di approfondirlo sempre più. Comunque, bando alle ciance e vi espongo il mio problema:
è chiesto di risolvere un esercizio in cui, assegnato un vettore, l'applicazione deve verificare se nell'array è contenuto o meno un certo valore; il tutto deve poi essere stampato a video. Il codice che ho elaborato è il seguente:
import java.util.Scanner;

public class ArrayRicerca 
{
	public static void main (String args[])
	{
		Scanner sc = new Scanner (System.in);
		int [] a = {1,22,334,5};
		System.out.print("Inserire il numero da cercare nel vettore: ");
		int num = sc.nextInt();
		
		for (int i=0;i<a.length;i++) 
		{	
			if (a[i]==num)
			System.out.println("C'è, si trova in posizione " + i);
			
			else
			System.out.println ("Non c'è");

	}
	}
}
Se inserisco un valore presente nell'array, mi viene stampato quanto segue:

Inserire il numero da cercare nel vettore: 22
Non c'è
C'è, si trova in posizione 1
Non c'è
Non c'è
Se invece il valore non è presente:

Inserire il numero da cercare nel vettore: 212
Non c'è
Non c'è
Non c'è
Non c'è
Mi chiedo, come mai lo stampa per ogni valore?
Ringrazio in anticipo quanti mi risponderanno.

3 Risposte

  • Re: Esercizio Array Java - Problema

    leohowlett92 ha scritto:


    Mi chiedo, come mai lo stampa per ogni valore?
    Perché il "non c'è" è nel else, quindi ci passi per tutti gli elementi che non corrispondono.
    Soluzione? Usare un flag booleano, inizialmente a false; se trovi il valore lo metti true. Quindi solo dopo la fine del for puoi sapere se l'hai trovato o no.
  • Re: Esercizio Array Java - Problema

    Grazie andbin. non so cosa sia tale "flag" e su internet non sono riuscito a reperire materiale in grado di aiutarmi; saresti così gentile da spiegarmi il tutto, anche solo postando il codice corretto così che possa ragionarci un po' sopra? o, in alternativa, se c'è qualche manuale che ritieni adeguato in modo tale che possa consultarlo. grazie ancora
  • Re: Esercizio Array Java - Problema

    leohowlett92 ha scritto:


    non so cosa sia tale "flag" ; saresti così gentile da spiegarmi il tutto
    Un semplice:

    boolean trovato = false;

    messo all'inizio (prima del for). Poi nel for, solo quando trovi l'elemento cercato, lo metti a true. Dopo la fine del for, ha appunto la informazione se è stato trovato o no.

    Se vuoi anche stampare l'indice dell'elemento trovato hai almeno 2 opzioni:
    a) Nel for, quando trovi l'elemento, oltre a mettere trovato a true, stampi la scritta come hai già fatto. Finito il for stampi il "non c'è" ovviamente solo se trovato non è true.

    b) Definisci un'altra variabile per tenere l'indice dell'elemento trovato. Quindi la risposta, se trovato e a che indice oppure no, la puoi fare tutta dopo il for.
Devi accedere o registrarti per scrivere nel forum
3 risposte