Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    29

    return array da passare come parametro in un altro metodo

    ciao! come spiega il titolo ho un problema di parametri.
    il mio codice è composto da un primo metodo che somma gli elementi corrispondenti di due array aventi la stessa lunghezza

    codice:
        public int [] somma_elem(int []x, int y[]){
            int z[]= new int [x.length];
            for (int i=0; i<x.length;i++){
                z[i]=x[i]+y[i];
            }
            return z;
        }
    adesso devo creare un altro metodo che prenda due parametri, il primo deve essere questa z trovata nel metodo precedente, in maniera tale da poterci lavorare. come si può fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157


    io un controllo sulle dimensioni e sui parametri in input lo farei
    Codice PHP:
     public void mainProva(){
            
    int first []= {1,2,3,4,5,6};
            
    int second []= {7,8,9,10,11,12};
            
            
    int third[] = sommaElem(firstsecond); 
            
            
    second sommaElem(thirdfirst);
        }
        public  
    int[] sommaElem(int[] firstArrayint secondArray[]) {
            
            
    int ret[] = null
            if (
    firstArray == null || secondArray == null){
                throw new 
    IllegalArgumentException("Input cannot be null");
            }
            
            if (
    firstArray.length != secondArray.length || firstArray.length == 0){
                throw new 
    IllegalArgumentException("Input arrays must have same length and length must be greater than 0");
            }
            
            
    ret = new int[firstArray.length];
            
            for (
    int index 0index firstArray.lengthindex++) {
                
    ret[index] = firstArray[index] + secondArray[index];
            }
            return 
    ret;
        } 
    come vedi il valore di ritorno l'ho usato come parametro nella chiamata successiva
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    29
    a me serve un altro metodo che abbia due parametri: z ricavata prima, e una stringa. solo che scrivendo così:

    codice:
    public int [] metodo2 (z, String a){
    }
    ovviamente il compilatore non riconosce z. vorrei solo sapere come faccio a passare la z che ho ricavato dal metodo di prima: somma_elem

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157


    la signature di un metodo non cambia se tu uno dei parametri lo hai ricavato da un altro punto!! (fondamentali di ogni linguaggio di programmazione)

    Codice PHP:
    public void nomeMetodo(int [] primoElementoString stringa); 
    che tu primoElemento lo prenda come result di una chiamata ad altro metodo non fa certo cambiare la signature del metodo!!!
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    29
    cerco di spiegarmi meglio:

    codice:
    public class Vettori {
    
        public int [] somma_elem(int []x, int y[]){
            int z[]= new int [x.length];
            for (int i=0; i<x.length;i++){
                z[i]=x[i]+y[i];
            }
            return z;
        }
    
        
        public void metodo2 (int []z, String a){
            for (int j=0;j<z.length;j++)
            System.out.println(z[j]);
    ...//codice da scrivere 
    
        }
                
                
        public static void main(String args[]){
            Vettori v= new Vettori();
            int x[]= {1,2,3};
            int y[]={4,5,6};
           // v.somma_elem(x, y);
            v.metodo2(v.somma_elem(x, y));
        }
    }
    vorrei capire se c'è un altro modo di passare z (e possibilmente non nel main ma nel primo parametro di metodo2) al posto di scrivere questo:

    v.metodo2(v.somma_elem(x, y));

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Nessuno ti vieta di fare così:

    codice:
        public static void main(String args[]){
            Vettori v= new Vettori();
            int x[]= {1,2,3};
            int y[]={4,5,6};
           // v.somma_elem(x, y);
            v.metodo2(v.somma_elem(x,y), "Tua stringa");
        }
    Ma se il metodo vuole 2 parametri, devi passarglieli tutti e due, non solo uno...


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    29
    hai ragione, avevo dimenticato di passare pure la stringa.
    Quindi non ci sono altri modi?...devo per forza passare "z" dal main in quel modo?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scusa e in che altro modo vuoi passarlo?
    Forse non ti seguo, un parametro lo ottieni come result dell'esecuzione di un metodo o perché ne fissi tu il contenuto. In entrambi i casi se vuoi passarlo quello è il pattern.

    Prova a spiegare quello che hai in mente
    RTFM Read That F*** Manual!!!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se il tuo pensiero è rivolto alle "variabili globali"... si può fare, ma non è un approccio elegante.

    codice:
       private int[] risultato;
       ...
       public void somma_elem(int []x, int y[]){
            risultati = new int [x.length];
            for (int i=0; i<x.length;i++){
                risultato[i]=x[i]+y[i];
            }
        }
    
        public void metodo2 (String a){
            for (int j=0;j<risultato.length;j++)
            System.out.println(risultato[j]);
            ... //codice da scrivere 
    
        }
    
        public static void main(String args[]){
            Vettori v= new Vettori();
            int x[]= {1,2,3};
            int y[]={4,5,6};
            v.somma_elem(x, y);
            v.metodo2("Tua stringa");
        }
    risultato è un array dichiarato come campo della classe. Vene valorizzato dal metodo "somma_elem", che a questo punto non deve più ritornare alcun risultato. Di conseguenza, non sono più costretto a passare al "metodo2" l'array (perchè già lo conosce).

    Se non c'è una reale necessità per cui applicare questa soluzione, è sempre meglio la soluzione precedente.


    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    29
    visto che è funzionante, allora va benissimo così
    :-)
    grazie a entrambi!

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.