Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232

    dubbio esercizio java

    Come esercizio dovrei Scrivere un metodo che prenda in input un array di long, e restituisca un boolean che indichi se esiste una sequenza crescente di almeno 5 numeri contigui...tipo:<8, 3, 9, 2, 4, 7, 9, 12, 15, 6, 4>, Output : True
    codice:
    public static boolean metodo(long [] A){
    		int cont=0;
    		for(int i=0; i<A.length-1; i++){
    			
    			System.out.println(A[i]+" < "+A[i+1]);
    			
    			if(A[i] <A[i+1])
    				cont++;
    			System.out.println(cont+"\n");
    				
    			if(cont==5)
    				return true;
    		}
    		return false;
    	}
    Però ho un dubbio...credo che così facendo nn attenziono se i valori sn contigui.. forse dovrei mettere cont=0; ma nn funziona.. qualche idea???!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: dubbio esercizio java

    Originariamente inviato da 5t4rdu5t
    credo che così facendo nn attenziono se i valori sn contigui.. forse dovrei mettere cont=0; ma nn funziona.. qualche idea???!
    Se non è crescente ... rimetti cont a 0.
    E il test se cont è 5 con return true puoi metterlo solo nel "ramo" dove si passa se "è crescente", ovvero dopo l'incremento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Perchè se la verifica del cont se è uguale a 5 nn è messo dopo l' incremento??!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da 5t4rdu5t
    Perchè se la verifica del cont se è uguale a 5 nn è messo dopo l' incremento??!
    Sì, nel codice sopra è messo dopo l'incremento ma comunque dopo il if e quindi eseguito ad ogni ciclo.

    Dicevo solo che puoi eseguirlo soltanto quando fai l'incremento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Ok credo di aver capito il codice è
    codice:
    public static boolean metodo(long [] A){
    		int cont=0;
    		for(int i=0; i<A.length-1; i++){
    			
    			System.out.println(A[i]+" < "+A[i+1]);
    			
    			if(A[i] <A[i+1]) {
    				cont++;
    			System.out.println(cont+"\n");
    			}
    			
    			else {
    				
    				cont=0;
    			}
    			
    			if(cont==5) {
    				return true;
    			}
    		      
    		}
    		return false;
    	}
    Però a questo il cont come lo mettevo io cioè dopo il for azzerava automaticamente tutto! invece però azzera e ricomincia a contare i numeri contigui.. credo che il codice sia corretto! spero di nn sbagliarmi.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da 5t4rdu5t
    credo che il codice sia corretto! spero di nn sbagliarmi.
    Sì, tecnicamente è corretto. Ma ripeto, come ottimizzazione, puoi fare il test "se è 5 return true" solo quando incrementi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    La logica dell'algoritmo va bene... solo un piccolo errore: sia quando lo inizializzi, sia quando lo resetti "cont" deve essere messo a 1 invece che a 0.

    Se vuoi, inoltre, puoi migliorare la condizione di uscita: se l'array è più corto di 5, o se dopo un reset ti accorgi di avere meno di 5 elementi da analizzare puoi interrompere l'esecuzione e ritornare false.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    puoi fare il test "se è 5 return true" solo quando incrementi.
    in che senso solo quando incremento??!!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da desa
    sia quando lo inizializzi, sia quando lo resetti "cont" deve essere messo a 1 invece che a 0.
    Sì, giusto questo è vero. Ma se si volesse rendere davvero coerente il tutto si dovrebbe inizializzare/resettare a 0 e se si trova una coppia crescente, se è la prima si mette 2 altrimenti si incrementa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Certamente: diciamo che è uno stratagemma "tecnico" e fa risparimiare il controllo di uguaglianza fra il contatore e 0

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.