Autre

Mac 'Index de chaîne hors limites : 0' ... Quelqu'un peut-il me dire ce qui ne va pas ? (Java)

Chase R

Affiche originale
8 mai 2008
PDX
  • 2 juin 2009
Je viens de finir d'écrire ce programme pour ma classe Java. C'est un programme simple qui calcule combien il en coûte pour installer une clôture. À la fin, il demande « Voulez-vous faire une autre estimation (O/N) ? » et l'utilisateur est censé choisir oui ou non. Cependant, une fois que j'ai fini d'exécuter le mien, je n'aurai pas cette option, cela dit simplement :

Calculer une autre estimation (O/N) : Exception dans le thread 'main' java.lang.StringIndexOutOfBoundsException : Indice de chaîne hors limites : 0
à java.lang.String.charAt (String.java:558)
à Test1.main(Test1.java:73)

Pourquoi ça fait ça!!!

Voici d'ailleurs le programme :

Code : |_+_|

Littleodie914

9 juin 2004


Rochester, État de New York
  • 2 juin 2009
Wow, c'est délicat. Je l'ai fait fonctionner en changeant votre dernier 'read.nextLine()' en 'read.next()', mais je vais regarder d'un peu plus près pour voir pourquoi cela ne fonctionne pas de la première manière.

Éditer: Cela semble avoir quelque chose à voir avec la méthode nextLine() qui fait avancer le pointeur au-delà de la ligne actuelle. Je ne le comprends pas trop moi-même, mais ces liens pourraient aider à dissiper un peu de confusion :

Analyseur d'API
Message du forum connexe

HiRez

6 janvier 2004
Ouest des États-Unis
  • 2 juin 2009
Je vais deviner que l'un de vos précédent les appels read laissent le caractère de nouvelle ligne dans le tampon d'entrée du clavier. Par conséquent, lorsque vous appelez nextLine(), vous obtenez une chaîne vide, conduisant à l'exception essayant d'examiner le caractère à la position 0, car il n'y en a pas. C'est également un problème avec de nombreuses fonctions d'entrée C de la console. D'une manière ou d'une autre, vous voudrez probablement d'abord vider le tampon avec un appel de lecture factice ou quelque chose du genre. Je n'ai pas utilisé Java depuis longtemps donc je ne sais pas quelle serait exactement la bonne procédure.

grinceur729

Suspendu
25 novembre 2005
  • 2 juin 2009
Chase R a dit : Je viens juste de finir d'écrire ce programme pour ma classe Java. C'est un programme simple qui calcule combien il en coûte pour installer une clôture. À la fin, il demande « Voulez-vous faire une autre estimation (O/N) ? » et l'utilisateur est censé choisir oui ou non. Cependant, une fois que j'ai fini d'exécuter le mien, je n'aurai pas cette option, cela dit simplement :

Calculer une autre estimation (O/N) : Exception dans le thread 'main' java.lang.StringIndexOutOfBoundsException : Indice de chaîne hors limites : 0
à java.lang.String.charAt (String.java:558)
à Test1.main(Test1.java:73)

Pourquoi ça fait ça!!!

Puisque vous avez le code source, probablement dans un éditeur de programme qui peut être fait pour afficher les numéros de ligne, vous devriez pouvoir trouver où se trouve la ligne 73 dans le fichier Test1.main. Cela vous montrera où le problème se produit.

Maintenant, vous avez une exception qui dit qu'un indice de 0 est 'hors plage'. Si vous accédez à une chaîne de n caractères, quels sont les indices valides ?

Maintenant, pouvez-vous nous dire exactement dans quelle situation l'indice 0 n'est-il pas un indice valide ?

Cela devrait répondre à votre question.

SilencieuxPanda

Modérateur émérite
8 octobre 2002
La forêt de bambous
  • 2 juin 2009
gnasher729 a dit : Puisque vous avez le code source, probablement dans un éditeur de programme qui peut être fait pour afficher les numéros de ligne, vous devriez pouvoir trouver où se trouve la ligne 73 dans le fichier Test1.main. Cela vous montrera où le problème se produit.

La ligne est :

Code : |_+_|
juste après qu'il affiche 'Calculer une autre estimation (O/N):'