Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0 erreur en Java
Quand j'ai essayé d'exécuter ce code, j'obtiens cette erreur..je ne sais pas où je suis allé mal..
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at numericalComputatio.fibo.main(fibo.java:30)
package numericalComputatio;
public class fibo {
static double c = -0.618;
//double c = [(1-sqrt(5))/2] = - 0.618
/**
* Computes the fibonacci series
* @param n
* @return
*/
private static double fibo(int n){
if (n == 0)
return 1;
else if (n == 1)
return c;
else
{
double result = fibo(n - 1) + fibo(n - 2);
return result;
}
}
public static void main(String[] args) {
int n = 0;
double result = 0.0;
double result1 = 1.000000000;
if (args[0] != null)
n = Integer.parseInt(args[0]);
for(int i = 0; i<=n; i++)
{
result = fibo(i);
System.out.println("fib(" + i + ") = " + result + "Formula value = " + result1);
result1 = result1*c;
}
}
}
OriginalL'auteur cuddle | 2011-04-11
Vous devez vous connecter pour publier un commentaire.
Ici:
En ligne 30
Vous devez passer un argument.
args[0]
Tente d'accéder au premier élément du tableau args, depuis qui est rempli à partir de la ligne de commande arguments. Si vous ne passez pas tous les arguments que le tableau est vide et en essayant d'accéder à un non-existence de l'élément dans un tableau donne que l'exception.Que vous avez à apprendre à lire à l'exception stacktrace. Ils semblent dénués de sens au premier abord, mais une fois que vous savez comment les lire, ils sont très utiles. Ici est le vôtre:
Il se lit comme suit:
public static void main
méthodejava.lang.ArrayIndexOutOfBoundsException: 0
, ce qui signifie qu'il ya un tableau impliqués et l'index essayé d'être accéder à 0 ( le premier élément ) qui vous donne une bonne idée de ce qui se passe.fibo.java:30
C'est également très utile, en particulier lorsque vous avez le fichier source à portée de main, et peut regarder directement ce numéro de ligne.J'espère que cette aide.
args[0] != null
.Je m'ennuie de l'exception stacktrace en raison de la mise en forme. Corrigé après avoir vu la ligne coupable est pas. 30
Je n'allais pas sur le stacktrace, tout en sachant qu'il a été d'évaluer args[0] sur la ligne précédente 🙂
Alors comment faire pour tester un programme comme ceci en utilisant la ligne de commande? (Désolé, je suis juste un débutant..
OriginalL'auteur OscarRyz
Pour vérifier la args vous devez utiliser
args.length
- pas référence à l'indice explicitementOriginalL'auteur tom502
args[0]
ne sera jamais nulle (lorsqu'il est appelé à partir de la ligne de commande) - maisargs.length
peut être 0, auquel cas l'évaluation deargs[0]
vous donnera l'exception, parce qu'il n'y est aucun élément 0 du tableau. Il suffit de tester pour que:Que d'un côté, c'est assez bizarre de retourner un
double
defibo
- la normale de la suite de Fibonacci est définie en termes de nombres entiers (0, 1, 1, 2, 3, 5, 8 etc.). Si vous souhaitez mettre à l'échelle, je vous le multipliez par votre constante par la suite.OriginalL'auteur Jon Skeet
Sont vous fournir un argument de ligne de commande lorsque vous l'exécutez?
Si vous n'êtes pas alors la ligne ci-dessus échoue. Vous devriez vérifier si args.longueur >= 1 avant d'accéder à
args[0]
.OriginalL'auteur Jeff Foster
args
ne possède pas de tout élément , donc essayez d'accéder 0e vous donnera cetteOriginalL'auteur Jigar Joshi
Cette exception signifie:
OriginalL'auteur lukastymo
OriginalL'auteur
paquet coordCart;
public class LignePol {
privé du Point[] sommets;
}
OriginalL'auteur user3892501