Tabla de contenido:
- Usando argumentos de línea de comando en un programa Java
- Comprobando el número correcto de argumentos de línea de comando
Video: Paso de argumentos desde comandos main en Java 2024
Érase una vez, la mayoría de los programadores de Java usaban una interfaz de desarrollo basada en texto. Escribieron un comando en una ventana de aspecto sencillo, generalmente con texto blanco sobre fondo negro.
¡Qué aburrido!La ventana de aspecto simple se rige por varios nombres, según el tipo de sistema operativo que utilice. En Windows, una ventana de texto de este tipo es una ventana del símbolo del sistema. En un Macintosh y en Linux, esta ventana es el terminal. Algunas versiones de Linux y UNIX llaman a esta ventana un shell.
De todos modos, en la antigüedad, podías escribir un programa que absorbía información extra cuando escribías el comando para iniciar el programa.
Cuando ejecutas MakeRandomNumsFile, escribes alguna información adicional.En la imagen de arriba, el programador escribe java MakeRandomNumsFile para ejecutar el programa
MakeRandomNumsFile
. Pero el programador sigue java MakeRandomNumsFile con dos piezas de información adicionales: MyNumberedFile. txt y 5 . Cuando se ejecuta el programa
MakeRandomNumsFile
, el programa absorbe dos datos adicionales y los utiliza para hacer lo que el programa tiene que hacer. El programa chupa
MyNumberedFile. txt 5
, pero en otra ocasión el programador podría escribir SomeStuff 28 o BunchONumbers 2000 . La información adicional puede ser diferente cada vez que ejecuta el programa.
La siguiente pregunta es, "¿Cómo sabe un programa Java que se supone que debe generar información extra cada vez que se ejecuta? "Desde que comenzó a trabajar con Java, ha estado viendo este negocio
String args []
en el encabezado de cada
método principal
. Bueno, es hora de que descubras de qué se trata todo esto. El parámetro
args []
es una matriz de valores
String
. Estos
String
valores se llaman argumentos de línea de comandos.
Algunos programadores escriben
public static void main (String args [] )
y otros programadores escriben
public static void main (String [] args)
De cualquier manera,
args
es una matriz de
String
valores.
Usando argumentos de línea de comando en un programa Java
Este bit de código le muestra cómo usar argumentos de línea de comando.
Así es como se genera un archivo de números
import java. util. Aleatorio;
import java io. PrintStream;
import java io. IOException;
public class MakeRandomNumsFile {
public static void main (String args [] ) arroja IOException {
Generador aleatorio = new Random ();
si (args.longitud <2) {
Sistema. fuera. println ("Uso: número de nombre de archivo MakeRandomNumsFile");
Sistema. salida (1);
}
PrintStream printOut = new PrintStream (argumentos [0]);
int numLines = Entero. parseInt (args [1]);
para (int count = 1; count <= numLines; count ++) {
printOut. println (generador. nextInt (10) + 1);
}
printOut. cerca();
}
}
Si un programa en particular espera algunos argumentos de línea de comandos, no puede iniciar el programa ejecutándose de la misma manera que iniciaría la mayoría de los demás programas normales. La forma en que alimenta los argumentos de la línea de comando a un programa depende del IDE que esté usando: Eclipse, NetBeans o lo que sea. Allmycode. com tiene instrucciones para alimentar argumentos a programas que usan varios IDEs.
Cuando el código comienza a ejecutarse, la matriz
args
obtiene sus valores. Con la ejecución que se muestra en la imagen de arriba, el componente de matriz
args [0]
toma automáticamente el valor
"MyNumberedFile. Txt"
y
args [1]
se convierte automáticamente en
"5"
. Así que las instrucciones de asignación del programa terminan teniendo el siguiente significado:
PrintStream printOut = new PrintStream ("MyNumberedFile. Txt");
int numLines = Entero. parseInt ("5");
El programa crea un archivo llamado
MyNumberedFile. txt
y establece
numLines
a
5
. Luego, más adelante en el código, el programa genera aleatoriamente cinco valores y los coloca en
MyNumberedFile. txt
. Una ejecución del programa te da esto.
Después de ejecutar el código, ¿dónde puede encontrar el nuevo archivo (
MyNumberedFile. Txt
) en su disco duro? La respuesta depende de muchas cosas diferentes. Si usa un IDE con programas divididos en proyectos, entonces el nuevo archivo se encuentra en algún lugar de la carpeta del proyecto. De una manera u otra, puede cambiar el Listado 11-7 para especificar un nombre de ruta completo: un nombre como
"c: \ Usuarios \ MiNombre \ Documentos \ MiNúcleo.txt"
o
"/ Users / MyName / Documents / MyNumberedFile. Txt"
.
En Windows, los nombres de ruta de archivo contienen caracteres de barra diagonal inversa. Y en Java, cuando quiere indicar una barra invertida dentro de un literal String de comillas dobles, utiliza una doble barra diagonal inversa. Es por eso que "c: \ Users \ MyName \ Documents \ MyNumberedFile. txt "contiene pares de barras diagonales inversas. Por el contrario, las rutas de archivos en los sistemas operativos Linux y Macintosh contienen barras diagonales. Para indicar una barra inclinada en Java String, use solo una barra diagonal.
Observe cómo cada argumento de la línea de comando es un valor
Cadena
. Cuando miras
args [1]
, no ves el número 5: ves la cadena
"5"
con un dígito en ella. Lamentablemente, no puede usar ese
"5"
para hacer ningún conteo. Para obtener un valor
int
de
"5"
, debe aplicar el método
parseInt
.
El método
parseInt
vive dentro de una clase llamada Entero. Entonces, para llamar a
parseInt
, debe introducir el nombre parseInt con la palabra Entero. La clase
Integer
tiene todo tipo de métodos útiles para hacer cosas con valores
int
.
En Java, Integer es el nombre de una clase, e int es el nombre de un tipo primitivo (simple). Las dos cosas están relacionadas, pero no son lo mismo. La clase
Integer
tiene métodos y otras herramientas para tratar con los valores
int
.
Comprobando el número correcto de argumentos de línea de comando
¿Qué sucede si el usuario comete un error? ¿Qué ocurre si el usuario olvida escribir el número 5 en la primera línea w cuando abre
MakeRandomNumsFile
?
Entonces la computadora asigna
"MyNumberedFile. Txt"
a
args [0]
, pero no asigna nada a
args [1]
. Esto es malo. Si la computadora llega alguna vez al enunciado
int numLines = Entero. parseInt (args [1]);
el programa falla con una
ArrayIndexOutBoundsException hostil
.
¿Qué haces al respecto? Usted verifica la longitud de la matriz
args
. Compara
args. longitud
con
2
. Si el array
args
tiene menos de dos componentes, aparecerá un mensaje en la pantalla y saldrá del programa.
A pesar de la comprobación de
args. longitud
, el código aún no es a prueba de choques. Si el usuario escribe cinco en lugar de 5, el programa se cae en picado con un
NumberFormatException
. El segundo argumento de línea de comando no puede ser una palabra. El argumento tiene que ser un número (y un número entero, en eso). Puede agregar declaraciones para hacer que el código sea más a prueba de balas.
Cuando trabajas con argumentos de línea de comando, puedes ingresar un valor de
Cadena
con un espacio en blanco. Simplemente encierre el valor entre comillas dobles. Por ejemplo, puede ejecutar el código anterior con argumentos
"Mi Big Fat File. Txt" 7
.