class Loop { public static void main(String[] args) { int n; if (args.length == 0) System.out.println("Occorre passare un valore come argomento all'avvio."); else { n = Integer.parseInt(args[0]); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) System.out.print(i * j % n); System.out.println(); } } } } /** * Risposte ai quesiti. * * 1) Vi rimando alla sezione 6.2.3 del libro di testo. * * La dichiarazione del parametro String[] args del metodo main indica che * args e' un array il cui tipo base e' String. Di conseguenza, il metodo * main accetta come parametro un array di valori di tipo String. * * E' possibile fornire delle stringhe come argomenti del programma e queste * stringhe diventano automaticamente elementi dell'array args che rappresenta * l'argomento di main. * * Di solito, gli argomenti vengono passati al programma quando lo si esegue * da riga di comando. As esempio, il comando "java Loop 25 83" assegna * la stringa 25 ad args[0] e la stringa 83 ad args[1]. * * L'argomento del mai e' *sempre* un array di strighe. Se si vogliono * utilizzare altri valori, bisogna convertire le stringhe nel tipo desiderato. * In questo caso la chiamata Integer.parseInt(args[0]) converte la stringa * args[0] nel corrispondente intero rappresentato. * * 2) Compilate il presente codice ed eseguite il comando: "java Loop 4" * * 3) Vi rimado ai lucidi della prima lezione di Laboratorio * http://www.cbmc.it/~marchettil/Laboratorio%20programmazione/ * * Quando viene eseguito un programma da linea di comando, esso ha * automaticamente a disposizione due canali di output separati. * Uno di essi รจ detto Standard Output, l'altro Standard Error. * Di default entrambi sono connessi allo schermo (nella shell, il terminale * o finestra dei comandi) e quindi i loro contenuti si mescolano, * ma l'utente del programma puo' decidere di separarli redirigendo uno di * essi o entrambi su un file. * * Lo scopo e' che il normale output dell'applicazione vada sul canale Output * mentre i warning e gli errori vadano sul canale Error. * Il programmatore decide quale output debba essere considerato parte del * normale flusso del programma, in modo da inviarlo al canale Standard Output. * Il resto, ovvero l'output anomalo, verra' inviato al canale Standard Error. * * La classe java.lang.System di Java mette a disposizione System.out per * scrivere sul canale di Standard Output e System.err per scrivere sullo * Standard Error. * * Vi suggersisco la seguente pagina di StackOverflow * (guardate la risposta piu' votata): * http://stackoverflow.com/questions/2896743/difference-between-system-out-and-system-err * * Sarebbe stato preferibile una chiamata a System.err alla riga 7 del * programma. */