Ici, j'obtiens cette erreur: Exception dans le thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 hors limites pour la longueur 0
public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); String input = keyboard.nextLine(); System.out.println(input); while(true){ if(args[0].equals("k")){ System.out.println("k"); } } }
4 Réponses :
Vous devez exécuter le code sur cmd en tant que java MyProgram abc xyz alors args contiendra ["abc", "xyz"]. Peut-être que vous ne le faites pas maintenant et que vous obtenez donc l'erreur.
Vous devez fournir des arguments de ligne de commande comme ceci:
java MyClass k foo bar
Ces arguments sont passés au tableau args[]
qui contiendra alors {"k", "foo", "bar"}
Donc args.length
sera 3
et args[0]
sera k
Si vous exécutez via IDE et ne définissez pas d'arguments OU ne transmettez pas d'arguments de ligne de commande lors de l'exécution via cmd
, vous obtiendrez cette erreur.
Mais pour ce programme, même si vous passez des arguments, il fonctionnera probablement en boucle infinie car la condition while est toujours vraie.
Vous exécutez cette classe java sans arguments. Dans ce cas, args [0] existe maintenant, et donc le message Exception avec erreur.
Vous pouvez modifier le if dans ce formulaire:
if(args[0].equals("k") && args.length > 0 )
afin que vous n'obteniez pas d'exception avec le message
Index 0 hors limites pour la longueur 0
Votre programme produit une sortie sans erreur, lorsque l'exécution du programme avec l'argument "k" produit l'aspect infini de l'impression de k. Pour cela, vous devez exécuter la commande java printKjavaFile k, ou la démarrer à partir de l'IDE avec cet argument.
Peut-être args.length == 0?
Avez-vous lancé ce programme en fournissant une entrée via la console? args obtient sa valeur via la console. Sinon args [] sera vide
Au lieu de
args[0].equals("k")
; vous devez utiliserinput.equals("k")
.args
est l'argument qui doit être passé via la ligne de commande au moment de l'exécution du fichier.class
via la console. Quelque chose commejava Your_Class_Name k
@ karthik-putchala Pouvez-vous accepter ma réponse, car elle est précise et détaillée sur ce point?