2011-09-16 16 views
5

Estoy tratando de ejecutar una aplicación de calculadora de Java desde la línea de comandos. los parámetros son los siguientes: operador operando1 operando2. Puedo ejecutar con éxito el programa java para + y -.
p. Ej.
java Calc + 2 4
java Calc - 10 4
Argumentos de la línea de comandos de Java. Usando * como argumento para la multiplicación

Pero cuando trato de ejecutar
java * 2 5

System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);

da salida :
.classpath
.project
.settings

descubrí por ensayo y error que el uso de comillas simples ('*') resolvió mi problema. SO ahora tengo dos preguntas.
1. ¿Está utilizando comillas simples de la manera correcta para hacerlo? (java calc '*' 2 5)
2. ¿Cuál es el significado de * en la línea de comandos de java? (He tratado de encontrar esto en Internet, pero no encontré mucha ayuda)

Gracias, Unidad P

+0

Busque en la Web la "extensión de nombre de archivo". Y sí, solo cita los asteriscos. –

Respuesta

13

¡No es Java, que es la cáscara (cmd si estás en Windows) que está utilizando interpreta * como "todos los archivos y carpetas en el directorio actual".

Así que cuando su escritura:

java calc * 2 5 

Que se va a dar a su programa los siguientes argumentos:

java calc file_1 file_2 ... file_n 2 5 

Dónde file_1 ... file_n son todos los archivos (y carpetas) en el directorio actual).

Si no desea que su shell interprete * como todos los archivos que necesita (como habrá notado) para citar ese argumento.

+1

debería ser "(double quoute) not '(comilla simple). –

+1

@ reader_1000: Buen punto ya que esta era una pregunta" solo para Windows "(otras shells necesitan otros personajes para citarla o escapar de ella ... Por ejemplo' sh 'usa' \ * '.) – dacwe

+0

Disculpa por no mencionar qué sistema operativo estaba usando. Estoy usando Windows. Y en windows cmd con comillas dobles (") todavía me da el mismo error. El uso de comillas simples (') aunque funciona bien. Y como @dacwe correctamente señaló que la secuencia de escape es diferente para diferentes plataformas. Gracias chicos por la respuesta y comentarios :) – Gadenkan

1

Si cita sus argumentos de comando, el shell no los expandirá a nombres de archivo. '*' no tiene un significado especial para Java, es el shell el que procesa esta entrada.

Cuestiones relacionadas