1
votes

Index 0 hors limites pour la longueur 0

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 commentaires

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 utiliser input.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 comme java Your_Class_Name k


@ karthik-putchala Pouvez-vous accepter ma réponse, car elle est précise et détaillée sur ce point?


4 Réponses :


0
votes

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.


0 commentaires

0
votes

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


0 commentaires

0
votes

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.


0 commentaires

0
votes

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.


0 commentaires