Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [java] multiplo di 3

  1. #1

    [java] multiplo di 3

    salve a tutti, chiedo il vostro aiuto per un esercizio che mi sembra giusto ma non funziona...
    devo acquisire tanti numeri uno per riga terminati da 0 e stabilire se c'è almeno uno che è multiplo di 3. Facile no? no, non funziona. xD
    con SavitchIn.readLineInt(); acquisisco il valore intero nella variabile.

    codice:
    class MultiploTre
    {
        public static boolean EsisteMultiploTre(int n)
        {    return n%3==0;
        }
        
        public static void main(String[] args)
        {    int n;
            boolean flag=false;
            
            System.out.println("Inserisci un elenco di numeri terminati da 0");
            do
            {    n=SavitchIn.readLineInt();
                if(!flag)
                    flag=EsisteMultiploTre(n);
            }while(n!=0);
            if(flag)
                System.out.println("Esiste almeno un multiplo di 3.");
            else
                System.out.println("Non hai inserito multipli di 3.");
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Infatti... il controllo (ovvero, la chiamata al metodo EsisteMultiploTre()) devi farla se e solo se il valore inserito è diverso da 0... altrimenti, ci sarà sempre un multiplo di 3: lo zero che inserisci per terminare. 0 è multiplo di qualunque numero).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Infatti... il controllo (ovvero, la chiamata al metodo EsisteMultiploTre()) devi farla se e solo se il valore inserito è diverso da 0... altrimenti, ci sarà sempre un multiplo di 3: lo zero che inserisci per terminare. 0 è multiplo di qualunque numero).
    me l'ha spiegato anche un mio amico poco fa, ma avevo fatto anche la prova di usare anzichè il ciclo
    do..while()
    il ciclo
    while() in modo da poter subito escludere lo 0, ma mi dava lo stesso esito precedente... non capisco perchè

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Non so cos'hai fatto come modifica, ma io ho provato il tuo codice aggiungendo, appunto, il controllo per lo 0, senza toccare nient'altro nel codice... e funziona.:


    codice:
    if(!flag && (n != 0))
        flag=EsisteMultiploTre(n);

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Non so cos'hai fatto come modifica, ma io ho provato il tuo codice aggiungendo, appunto, il controllo per lo 0, senza toccare nient'altro nel codice... e funziona.:


    codice:
    if(!flag && (n != 0))
        flag=EsisteMultiploTre(n);
    esattamente quello che ho dovuto fare io per risolvere il problema che si presentava non so perchè (ora ho capito xD)
    in pratica volevo evitare
    codice:
    if(!flag && n!=0)
    usando:
    codice:
    n=SavitchIn.readLineInt();
    while(n!=0)
    {
          if(!flag)
             flag=EsisteMultiploTre(n);
          n=SavitchIn.readLineInt();
    }
    però lo stesso mi da errore, l'unica è stata quella di usare
    codice:
    
    
    codice:
    if(!flag && (n != 0))
        flag=EsisteMultiploTre(n);

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.