Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    esercizio sequenza ordinata di interi

    Ciao ragazzi,
    devo fare un es. che legge una seq di interi terminata da due valori consecutivi uguali, e poi stampa SI se la seq è ordinata in modo crescente, NO altrimenti.
    questo è il mio codice:

    codice:
    public class es { 	 	
    public static void main (String args[]) { 
    		 
    int a = Input.readInt("Scrivi un numero: "); 	
    int b = Input.readInt("Scrivi un numero: "); 
    		 	
        while (b!=a) { 		 		
        a=b; 	 		 
        b = Input.readInt("Scrivi un numero: "); 		 	
         } 	
    	 
         if (b > a) { 		
         System.out.println("OK ");	 				 		
           } 		 	 	
          else {  	 	
    System.out.println("NO" ); 	
         } 	 	 
    } }
    Il while funziona correttamente, infatti termina quando ci sono due valori consecutivi uguali.
    Il problema però è nell'if. Gli dico b>a, ma in quel momento b è uguale ad a, quindi mi stampa sempre NO.

  2. #2
    Ciao, prova così:

    codice:
    public class es
    {
        public static void main (String args[])
        {
    		boolean check = true;
    		int a = Input.readInt("Scrivi un numero: "); 	
    		int b = Input.readInt("Scrivi un numero: ");
    		if (a>b)
    			check = false;
    	    while (b!=a)	
    	    { 		 		
    	    	a=b; 	 		 
    	    	b = Input.readInt("Scrivi un numero: ");
    	    	if (a>b)
    	    		check = false;
    	    } 	
    	    if (check)
    	    { 		
    	    	System.out.println("OK ");
    	    }
    	    else
    	    {  	 	
    	    	System.out.println("NO" ); 	
    	    } 	 	 
    	}
    }
    In questo modo un boolean ti dirà se c'è un punto in cui la sequenza non è crescente. Il problema del tuo metodo è che avresti dovuto inserire l'if all'interno del while, altrimenti non serviva a nulla.

    Comunque se cerca di formattare meglio il listato perchè sia più chiaro nel leggerlo e nel correggerlo.

    Se trovi altri problemi chiedi pure!

  3. #3
    Ciao e grazie mille!
    Funziona perfettamente.
    Però posso sapere come mai nell'if ci va "if (check)" e non "if (check == true)" ?

  4. #4
    Originariamente inviato da djmary
    Ciao e grazie mille!
    Funziona perfettamente.
    Però posso sapere come mai nell'if ci va "if (check)" e non "if (check == true)" ?
    Di nulla!

    Perchè l'if vuole soltanto avere un'operazione al suo interno che restituisca un boolean true o false. Quindi se tu hai già un boolean non è necessario utilizzare l'espressione regolare "==". Poi se avessi usato quell'espressione sarebbe stata esattamente la stessa cosa.

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.