Contenuti del Corso
Java Avanzato
Java Avanzato
Esercitazione sui Metodi
Pratica
I metodi possono risultare complessi da comprendere, quindi questo capitolo fornisce esempi di vari metodi in azione, mostrando come funzionano, dove utilizzarli e come scrivere e combinare più metodi in modo efficace.
Esempio 1
Iniziamo con un metodo che prende un array di tipo int
e lo inverte, in modo che l'ultimo valore diventi il primo e il primo diventi l'ultimo:
Main.java
package com.example; public class Main { static int[] flipIntArray(int[] array) { int[] result = new int[array.length]; int index = 0; for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } static void printIntArrayToTheConsole(int[] array) { for (int element : array) { System.out.print(element + " "); } System.out.println(); } public static void main(String[] args) { // do not modify the code below int[] firstArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] secondArray = {0, 2, 4, 6, 8, 10, 12, 14, 16}; printIntArrayToTheConsole(flipIntArray(firstArray)); printIntArrayToTheConsole(flipIntArray(secondArray)); } // do not modify the code above }
-
Per prima cosa, osserviamo il metodo
flipIntArray
alla riga 4, che utilizza un ciclo che parte dalla fine dell'array e memorizza i suoi valori in un nuovo array della stessa dimensione. È presente anche una variabileindex
alla riga 6 che aumenta per memorizzare i valori nell'arrayresult
; -
Successivamente, puoi vedere il metodo alla riga 14 del capitolo precedente, che utilizzo per stampare l'array con una sola riga di codice;
-
Ora, passiamo a qualcosa di interessante. Puoi vedere alle righe 25-26 che sto passando un metodo come parametro all'interno di un altro metodo. Questo perché sto utilizzando un metodo che restituisce
int[]
all'interno di un metodo che accettaint[]
come parametro, risparmiando così la memoria allocata per la creazione delle variabili. Possiamo vedere che i nostri metodi funzionano e visualizzano i valori corretti.
Esempio 2
Supponiamo di dover scrivere un metodo che calcoli il fattoriale, prendendo come input una variabile intera.
Main.java
package com.example; // do not modify the code below this comment public class Main { // method to calculate the factorial of a number static int calculateFactorial(int input) { int result = 1; // loop to calculate factorial by multiplying each number from 1 to input for (int i = 1; i <= input; i++) { result = result * i; } // return the final result of the factorial calculation return result; } public static void main(String[] args) { // initializing the first number for factorial calculation int first = 5; // initializing the second number for factorial calculation int second = 7; // initializing the third number for factorial calculation int third = 4; // calculating and printing the factorial of the first number System.out.println("Factorial of the first number = " + calculateFactorial(first)); // calculating and printing the factorial of the second number System.out.println("Factorial of the second number = " + calculateFactorial(second)); // calculating and printing the factorial of the third number System.out.println("Factorial of the third number = " + calculateFactorial(third)); } }
In questo esempio, è stato scritto un metodo che moltiplica la variabile accumulatrice per i numeri da 1
fino al numero fornito, al fine di calcolare il fattoriale. Si tratta di un approccio diretto, e si può osservare come questo metodo venga utilizzato più volte nel metodo main
, il che ottimizza lo spazio e migliora la leggibilità del codice.
Successivamente, il metodo viene utilizzato all'interno di System.out.println
poiché restituisce un valore di tipo int
.
Esempio 3
Si scriverà un metodo che crea una abbreviazione da un array di stringhe.
Main.java
package com.example; // do not modify the code below this comment public class Main { // method to create abbreviation by taking first letter of each word static String makeAbbreviation(String[] input) { StringBuilder result = new StringBuilder(); // iterate through each word and append the first letter to result for (String word : input) { result.append(word.toUpperCase().charAt(0)); } // return the abbreviation as a string return result.toString(); } public static void main(String[] args) { // initializing arrays with words for abbreviation String[] firstArray = {"united", "nations"}; String[] secondArray = {"North", "Atlantic", "Treaty", "Organization"}; String[] thirdArray = {"Oh", "my", "God"}; // printing abbreviation for the first array System.out.println(makeAbbreviation(firstArray)); // printing abbreviation for the second array System.out.println(makeAbbreviation(secondArray)); // printing abbreviation for the third array System.out.println(makeAbbreviation(thirdArray)); } }
In questo metodo, utilizziamo la classe StringBuilder
per chiamare il metodo append()
e aggiungere la prima lettera maiuscola a una stringa inizialmente vuota. In questo modo, iteriamo attraverso ogni elemento dell'array, prendiamo la lettera nella posizione zero (la prima lettera di ogni parola), la convertiamo in maiuscolo utilizzando il metodo toUpperCase()
, e la aggiungiamo al nostro risultato tramite il metodo append()
. Infine, utilizziamo il metodo toString()
per convertire il nostro StringBuilder
in una String
.
1. Che cos'è un valore di ritorno in un metodo?
2. Cosa restituisce un metodo void
?
3. È possibile utilizzare un metodo all'interno di un altro metodo?
Grazie per i tuoi commenti!