Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Università _ Linguaggio Java

    Ciao a tutti !!! Spero mi potiate aiutare !!!

    Dunque ho un esame all’università riguardante il linguaggio di programmazione JAVA e sto cercando di risolvere alcuni esercizi presenti all’interno del sito dell’università. L’esercizio è il seguente:

    public class Esercizio1 {
    static int elabora(boolean[] a, int[] b) {
    int ris = 0;
    for (int i = 2; i < a.length; i++)
    if (a[i])
    for (int j = i+2; j < b.length; j++)
    if (b[j]%b[i]==0)
    a[j]=false;
    for (int i = 1; i < a.length; i++)
    if (a[i]) ris++;
    return ris;
    }
    public static void main(String[] args) {
    boolean[] x = {true,true,true,true,true,true,true,true,true,true ,true};
    int[] y = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10};
    int z = elabora(x, y);
    System.out.println(z);
    }
    }


    Ho provato questo codice è il risultato di z è 18 ma non capisco come fa a fare 18, potreste spiegarmi l’intero codice? Grazie mille…

    Poi altra cosa, nel primo ciclo for i < a.lenght, come può essere verò se a è un’array boolean il cui valore è null visto che non è stato allocato spazio di memoria con la parola “new”?


    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Codice PHP:
    public class Esercizio1 {
    //metodo statico che restituisce intero di nome elabora
    //a e b sono due parametri formali di metodo con a array di boolean e b array di interi
    static int elabora(boolean[] aint[] b) {
    int ris 0;
    //for per scorrere gli elementi di a a partire dal terzo elemento
    for (int i 2a.lengthi++)
    //se a[i] è vero
    if (a[i])
    //for per scorrere gli elementi di b partendo dall'i-esimo elemento +2
    for (int j i+2b.lengthj++)
    //se b[j] diviso b[i] non dà resto
    if (b[j]%b[i]==0)
    //setto il j-esimo elemento di a falso
    a[j]=false;
    //for per scorrere gli elementi di a a partire dal secondo elemento
    for (int i 1a.lengthi++)
    //se a[i] è vero incremento la variabile ris
    if (a[i]) ris++;
    //restituisco l'intero ris
    return ris;
    }
    public static 
    void main(String[] args) {
    //definisco l'array di booleani x
    boolean[] = {true,true,true,true,true,true,true,true,true,true,true};
    //istanzio l'array degli interi
    int[] = { 0123456789,10};
    //richiamo il metodo salvando il risultato in una variabile z
    int z elabora(xy);
    //stampo z
    System.out.println(z);
    }


    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    riguardo l'ultima domanda, in java tutti gli oggetti, array compresi, vengono passati per riferimento, quindi il parametro a del metodo elabora è in realtà un puntatore all'array x allocato nel main

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da kuarl
    in java tutti gli oggetti, array compresi, vengono passati per riferimento
    In Java il passaggio dei parametri è sempre per valore. Anche quando si ha un reference (ad array o oggetto) a un metodo viene passata una copia del valore del reference.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    ...

    ma a.lenght a quanto vale?poi potrei avere una spiegazione più dettagliata?

    per esempio:

    for (int i = 2; i < a.length; i++)

    la variabile i parte da 2 , i è inferiore alla lunghezza di a e quindi passo alla condizione if(a[i]) etc-...

  6. #6

    ...

    quello che non capisco e come fa a fare 18

  7. #7
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537

    Re: ...

    Originariamente inviato da AntonyNero
    ma a.lenght a quanto vale?poi potrei avere una spiegazione più dettagliata?

    per esempio:

    for (int i = 2; i < a.length; i++)

    la variabile i parte da 2 , i è inferiore alla lunghezza di a e quindi passo alla condizione if(a[i]) etc-...
    Ma è la prima volta che prendi in mano la programmazione in generale???

    il for inizializza la variabile i a 2, verifica che i sia inferiore alla lunghezza ( numero di valori all'interno ) della variabile ( vettore ) a , esegue il blocco all'interno del for. Finito il blocco di codice all'interno del for incrementa i di una unità e poi effettua nuovamente il controllo...ecc...ecc...ecc...quando il controllo restituisce false esce dal ciclo for.
    Chiaro?
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537

    Re: ...

    Originariamente inviato da AntonyNero
    quello che non capisco e come fa a fare 18
    Prendi un foglio di carta, scrivi le tue variabili e fai passo per passo quello che viene fatto, oppure apri un IDE in modalità debug e segui passo passo le varie operazioni....
    Ma non è che tu ti confondi con il fatto che mancano le parentesi graffe e ti sembra un cionaio dato che non è neppure indentato bene?

    Piccola precisazione, se in un ciclo, o in un if l'operazione successiva è solamente 1, si possono omettere anche le graffe, ma questo è ricorsivo, ovvero
    codice:
    for(.....){
        if(....)
          for(.....)
              if(.....)
    }//Aggiunta perchè se no impazzisci
    Esattamente come nel tuo esempio, quindi se non viene passato il primo if, cicla nuovamente sul for e non va avanti con il secondo for.....forse ho risolto il tuo dubbio!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    è la prima volta che prendo in mano la programmazione scusate, però i come fa a essere inferiore alla lunghezza di a? i vale due, a è l'array che non è stato ancora allocato quindi è impostato a null giusto?

  10. #10
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da AntonyNero
    è la prima volta che prendo in mano la programmazione scusate, però i come fa a essere inferiore alla lunghezza di a? i vale due, a è l'array che non è stato ancora allocato quindi è impostato a null giusto?
    No...no...no.
    Allora...guarda queste due parti del codice da te scritto:
    codice:
    static int elabora(boolean[] a, int[] b) {
    [...]
    public static void main(String[] args) {
    //definisco l'array di booleani x
       boolean[] x = {true,true,true,true,true,true,true,true,true,true,true};
    //istanzio l'array degli interi
       int[] y = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10};
    //richiamo il metodo salvando il risultato in una variabile z
       int z = elabora(x, y);
    //stampo z
       System.out.println(z);
    }
    Allora....tu nel main ( la prima funzione che viene eseguita all'esecuzione della tua applicazione ) crei due variabili, x e y.
    poi chiami la funzione elabora con parametri x e y.
    nella funzione elabora ( in cima ) a e b verranno assegnati rispettivamente con x ed y, quindi in a avrai x ed in b avrai y, dato che in java il passaggio è per valore ( quindi all'uscita della funzione le modifiche apportate a x ed y non saranno visibili all'esterno della funzione, a meno che queste non siano un valore di ritorno della funzione stessa ), e quindi all'interno della funzione elabora avrai i riferimenti a e b, ma che hanno i valori di x ed y ( non sembra una frase italiana corretta....però il concetto spero di avertelo spiegato bene ).
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

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.