View Full Version : [Java] Come passare a main un array di int da riga di comando?
cybergabry
30-10-2009, 14:21
Ciao a tutti,:)
avrei questo piccolo problema. Dovrei passare al main una serie di numeri interi che scrivo da riga di comando quando lancio il programmino.
Per esempio:
java Prova 34 87 -1 8 545
In questo caso il programma si chiama Prova e deve allocare un array di int che contiene quei valori.
Grazie per l'aiuto.
banryu79
30-10-2009, 14:42
dato che la firma del metodo main prende in ingresso un array o vararg di tipo String, passerai da riga di comando i tuoi numeri che ti arrivano come oggetti String.
java Prova 13 4 56 8 2234
Nel metodo main devi processare la collezione di String così arrivata per, ad esempio, ricavarti l'equivalente collezione di di oggetti Integer (int):
import java.util.ArrayList;
import java.util.List;
public class Prova {
// application entry-point
public static void main(String[] args) {
Prova p = new Prova(args);
p.printNumbers();
}
// lista dei numeri inseriti
List<Integer> myNumbers;
// aquisisci i numeri passati come argomento da linea di comando:
// stampa un messaggio in caso di errore
private Prova(String[] args) {
myNumbers = new ArrayList<Integer>(args.length);
try {
for (String s : args) {
Integer number = Integer.parseInt(s);
myNumbers.add(number);
}
}
catch (NumberFormatException e) {
System.err.println("Errore: bisogna passare solo numeri interi come argomenti.");
}
}
// stampa i numeri collezionati
public void printNumbers() {
for (Integer number : myNumbers) {
System.out.println(number);
}
}
}
Se per qualche ragione non vuoi usare le collection ma vuoi memorizzare i numeri in un semplice array di int, il codice rimane pressochè lo stesso:
public class Prova {
// application entry-point
public static void main(String[] args) {
Prova p = new Prova(args);
p.printNumbers();
}
// lista dei numeri inseriti
int[] myNumbers;
// aquisisci i numeri passati come argomento da linea di comando:
// stampa un messaggio in caso di errore
private Prova(String[] args) {
myNumbers = new int[args.length];
try {
for (int i=0; i<args.length; i++) {
int number = Integer.parseInt(args[i]);
myNumbers[i] = number;
}
}
catch (NumberFormatException e) {
System.err.println("Errore: bisogna passare solo numeri interi come argomenti.");
}
}
// stampa i numeri collezionati
public void printNumbers() {
for (Integer number : myNumbers) {
System.out.println(number);
}
}
}
L'unica cosa sensisbile che cambia a runtime è che quando una delle stringhe-argomento non viene riconosciuta come un intero nella versione con la collezione di Integer non viene inserito il corrispondente elemento, mentre nella versione con l'array l'elemento (un int) viene inserito con il valore di default (zero 0).
cybergabry
30-10-2009, 14:49
Ti ringrazio tanto. Avevo proprio agito in questo modo!!! Ma pensavo ci fosse una maniera per far accettare direttamente al main parametri di tipo int.
Grazie ancora per l'aiuto, mi hai chiarito questo dubbio.;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.