Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Ciao

    ci sono un paio di errori logici nel codice.
    Primo errore:
    if(x <= a.length) {
    dovrebbe essere
    if(x < a.length) {
    perché gli array iniziano da 0 e arrivano al n. elementi - 1

    Secondo: ogni volta che chiami quantiTrue, setti h nuovamente a 0.

    Prova così:
    codice:
    class U {
        
        private static int h = 0;
        
        public static void main(String[] args) {
            
            boolean a[] = {true,true,false,true,false,true,true,true,true};
            int x;
            System.out.println("Inserisci x");
            x = 0;
            int n = quantiTrue(a,x);
            System.out.println("Ci sono "+n+" elementi TRUE");
        }
        
        
        static int quantiTrue(boolean a[], int x) {
            
            if(x < a.length) {
                if(a[x] == true) {
                    h = h+1;
                }
                 quantiTrue(a,x+1);
            }
            
            return h;
        }
    }
    Un saluto

    Eugenio

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da iugin1974 Visualizza il messaggio

    Secondo: ogni volta che chiami quantiTrue, setti h nuovamente a 0.

    Prova così:
    codice:
    class U {
        
        private static int h = 0;
        
        public static void main(String[] args) {
            
            boolean a[] = {true,true,false,true,false,true,true,true,true};
            int x;
            System.out.println("Inserisci x");
            x = 0;
            int n = quantiTrue(a,x);
            System.out.println("Ci sono "+n+" elementi TRUE");
        }
        
        
        static int quantiTrue(boolean a[], int x) {
            
            if(x < a.length) {
                if(a[x] == true) {
                    h = h+1;
                }
                 quantiTrue(a,x+1);
            }
            
            return h;
        }
    }
    Un saluto

    Eugenio
    Mettere una variabile "globale" non è una buona pratica, soprattutto quando si può risolvere in maniera decisamente migliore:

    codice:
    private static int countTrue(boolean[] array, int currentIndex)
    {
        int trueFound = 0;
    
        if ( currentIndex < array.length )
        {
            if ( array[currentIndex] )
            {
                trueFound++;
            }
    
            trueFound += countTrue(array, currentIndex + 1);
        }
    
        return trueFound;
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Mettere una variabile "globale" non è una buona pratica, soprattutto quando si può risolvere in maniera decisamente migliore:
    Ahimé devo darti ragione... Chiedo scusa per l'imprecisione....

    Ciao

    Eugenio

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 © 2026 vBulletin Solutions, Inc. All rights reserved.