/ / pourquoi tester args.length? - java

pourquoi tester args.length? - java

Je suis un débutant en Java et je ne comprends pas comment tester args.length au début de nombreux codes, et pourquoi il n’est jamais supérieur à 0 dans aucun de mes codes?

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

Réponses:

1 pour la réponse № 1

Vous devez faire des entrées pour main mathod à partir de l'invite de commande.

comme ci-dessous

java LowPortScanner TEST1 TEST2

0 pour la réponse № 2

Parce que s'il n'est pas testé, une exception serait levée car host = args[0]; serait illégal.

Cependant, cela ne semble pas être très utile, un vide ou null host semble causer des problèmes supplémentaires.

Si la longueur de args est toujours 0assurez-vous que vous transmettez en fait des arguments de paramètre.


0 pour la réponse № 3

S'il n'y a pas d'argument de commande, le args[0] va échouer. C'est pourquoi il faut le protéger.


0 pour la réponse № 4

Cela dépend de la façon dont vous appelez le fichier de classe Java. Dans l'invite de commande ou le shell bash:

java LowPortScanner Argument1

en tapant la ligne ci-dessus dans l'invite de commande / bash, le nombre d'arguments augmentera à 1 (car Argument1 est un argument, après le fichier de classe LowPortScanner)

java LowPortScanner Argument1 Argument2

la ligne ci-dessus fera en sorte que le nombre d'arguments passe à 2.

Par conséquent args.length sera 2 dans le second cas et 1 dans le premier cas.


0 pour la réponse № 5

Si vous appelez votre programme depuis CMD ou bash, vous pouvez l’afficher comme suit:
java LowPortScanner google.com

Alors "google.com" est votre argument [0]. Lorsque votre programme prend en charge les attributs de ligne de commande, il est recommandé de vérifier si les arguments donnés sont corrects.


0 pour la réponse № 6

La variable String [] args contient tout le paramètrepassez à la ligne de commande complète du programme si vous ne transmettez aucun argument, la longueur de ces arguments devient 0. Maintenant, il est préférable de vérifier sa longueur avant d’y accéder autrement, il est alors possible d’obtenir ArrayIndexOutOfBoundsException 0


0 pour la réponse № 7

args dans public static void main(String[] args est le String tableau d'arguments passés en ligne de commande.

java LowPortScanner argument1 argument2

si vous essayez la commande ci-dessus args.length reviendra 2.

En ce qui concerne la vérification de la longueur, cela est fait pour les programmes java qui peuvent prendre des arguments en ligne de commande. Si les arguments ne sont pas passés, ils demandent une entrée.

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

Vous exécutez votre programme en utilisant java LowPortScanner par conséquent, aucun argument n'est passé et args.length est toujours nul.

De plus, si vous ne passez aucun argument et n’utilisez pas host=args[0] tu auras ArrayIndexOutOfBoundsException.