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 № 1Vous 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 0
assurez-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
.