/ / ¿Por qué probar args.length? - java

¿Por qué probar args.length? - java

Soy un principiante de Java y estoy confundido acerca de probar args.length al principio de muchos códigos, y ¿por qué nunca llega a ser más alto que 0 en ninguno de mis códigos?

import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;

public class LowPortScanner {
public static void main(String[] args) {
String host = "localhost";
if (args.length > 0) {
host = args[0];
}
for (int i = 1; i < 1024; i++) {
try {
Socket s = new Socket(host, i);
System.out.println("There is a server on port " + i + " of "
+ host);
}
catch (UnknownHostException ex) {
System.err.println(ex);
break;
}
catch (IOException ex) {}
} // end for
} // end main
} // end PortScanner

Respuestas

1 para la respuesta № 1

Tienes que ingresar a main mathod desde la línea de comandos.

como abajo

java LowPortScanner TEST1 TEST2

0 para la respuesta № 2

Porque si no se prueba, se lanzará una excepción porque host = args[0]; sería ilegal

Sin embargo, esto no parece que vaya a ayudar mucho, un vacío o null host Parece que causaría más problemas.

Si la longitud de args es siempre 0, entonces asegúrese de que en realidad está pasando argumentos de parámetros.


0 para la respuesta № 3

Si no hay argumentos de comando el args[0] fallará. Por eso hay que protegerlo.


0 para la respuesta № 4

Depende de cómo invoque el archivo de clase Java. En el símbolo del sistema o bash shell:

java LowPortScanner Argument1

escribir la línea anterior en el símbolo del sistema / bash hará que el recuento de argumentos aumente a 1. (porque Argument1 Es un argumento, después del archivo de clase. LowPortScanner)

java LowPortScanner Argument1 Argument2

la línea anterior hará que el argumento cuente para aumentar a 2.

por lo tanto args.length estarán 2 en el segundo caso y 1 en el primer caso.


0 para la respuesta № 5

Si está llamando a su programa desde CMD o bash, puede asignarlo a ARGuments como
java LowPortScanner google.com

Entonces "google.com" es tu argumento [0]. Cuando su programa admite atributos de línea de comandos, se recomienda probar si los argumentos dados están correctos.


0 para la respuesta № 6

La variable String [] args contiene todo el parámetropase al programa a través de la línea de comandos si no está pasando ningún argumento, entonces la longitud de args se convierte en 0. Ahora es mejor verificar su longitud antes de acceder. De lo contrario, existe la posibilidad de obtener ArrayIndexOutOfBoundsException si su tamaño es 0


0 para la respuesta № 7

args en public static void main(String[] args es el String matriz de argumentos pasados ​​desde la línea de comandos.

java LowPortScanner argument1 argument2

si intentas el comando anterior args.length regresará 2.

En cuanto a la verificación de la longitud, se realiza para los programas java que pueden tomar argumentos de la línea de comandos y, si no se pasan los argumentos, se solicita la entrada.

if(args.length >0 ){
//proceed using passed arguments
}else{
//proceed with some default value
}

Está ejecutando su programa usando java LowPortScanner por lo tanto no se pasan argumentos y args.length siempre es cero.

Además si no pasas ningún argumento y uso. host=args[0] conseguirás ArrayIndexOutOfBoundsException.