Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Svetlana94
    Registrato dal
    Nov 2013
    residenza
    Milano
    Messaggi
    19

    Ennesimo problema con array..

    Salve, non riesco a capire bene perchè mi stampa a video 1122 secondo il mio ragionamento dovrebbe stampare altri numeri, questo è l'esercizio:

    codice:
    public class A {
         public void metodo(Array array){
            for(int i=1;i<array.ar.length;i++){
                array.ar[i]=array.ar[i]-array.ar[i-1];
            }
        }
    }
    
    public class Array {
        public int[]ar;
    }
    
    public class Testdemo {
    
      
        public static void main(String[] args) {
           
            Array array=new Array();
            array.ar=new int[]{1,2,3,4};
            A a=new A();
            a.metodo(array);
            for(int i=0;i<array.ar.length;i++){
                System.out.print(array.ar[i]+" ");
            }
        }
        
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Quote Originariamente inviata da Svetlana94 Visualizza il messaggio
    secondo il mio ragionamento dovrebbe stampare altri numeri, questo è l'esercizio:
    E noi che ti dovremmo dire? Quel programma stampa correttamente 1 1 2 2.

    Quale sarebbe il tuo ragionamento?
    Quali numeri dovrebbe stampare?



    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
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao, la chiave sta ovviamente nel metodo "metodo"

    codice:
        public void metodo(Array array){
            for(int i=1;i<array.ar.length;i++){
                array.ar[i]=array.ar[i]-array.ar[i-1];
            }
        }

    Vediamo di capire cosa fa questo metodo. Prende in input un array e, iniziando dall'elemento di posto 1 (cioè il secondo), sostituisce ogni elemento con la differenza tra quello e il precedente. Bene.

    Partiamo dall' array 1 - 2 - 3 - 4
    Con i = 1 l'array viene trasformato e diventa 1 - 1 - 3 - 4
    Quindi i viene incrementata a 2 e viene fatta la differenza tra 3 e 1, trasformando così l'array in 1 - 1 - 2 - 4
    Infine i diventa 3 e viene fatta la differenza tra 4 e 2: l'array è quindi 1 - 1 - 2 - 2

    Tutto chiaro?

  4. #4
    Utente di HTML.it L'avatar di Svetlana94
    Registrato dal
    Nov 2013
    residenza
    Milano
    Messaggi
    19
    Quote Originariamente inviata da minomic Visualizza il messaggio
    Ciao, la chiave sta ovviamente nel metodo "metodo"

    codice:
        public void metodo(Array array){
            for(int i=1;i<array.ar.length;i++){
                array.ar[i]=array.ar[i]-array.ar[i-1];
            }
        }

    Vediamo di capire cosa fa questo metodo. Prende in input un array e, iniziando dall'elemento di posto 1 (cioè il secondo), sostituisce ogni elemento con la differenza tra quello e il precedente. Bene.

    Partiamo dall' array 1 - 2 - 3 - 4
    Con i = 1 l'array viene trasformato e diventa 1 - 1 - 3 - 4
    Quindi i viene incrementata a 2 e viene fatta la differenza tra 3 e 1, trasformando così l'array in 1 - 1 - 2 - 4
    Infine i diventa 3 e viene fatta la differenza tra 4 e 2: l'array è quindi 1 - 1 - 2 - 2

    Tutto chiaro?
    Grazie mille, non lo capivo perchè contavo dall'array originale e non da quello modificato

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ma curiosità, perché questa gestione "creativa" degli array? Perché hai una classe Array con dentro un array (pubblico tra l'altro...)? Non puoi usare direttamente l'array, senza aggiungere fuffa? O c'è qualche motivo particolare?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di Svetlana94
    Registrato dal
    Nov 2013
    residenza
    Milano
    Messaggi
    19
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Ma curiosità, perché questa gestione "creativa" degli array? Perché hai una classe Array con dentro un array (pubblico tra l'altro...)? Non puoi usare direttamente l'array, senza aggiungere fuffa? O c'è qualche motivo particolare?
    E' da chiedere alla mia prof di programmazione! Sono dei quiz a risposta multipla ed avevo capito male il programma..

Tag per questa discussione

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.