2010-08-19 5 views
1

Le code de test ci-dessous conduit à un bogue de "null pointer deference" sur un tableau de chaînes (sur la ligne 6). Cela conduit à une exception NullPointerException.Bogue: déférence du pointeur nul de la chaîne

public class TestString { 
public static void main (String args[]) { 
String test [] = null; 
for (int i =0; i < 5; i++) { 
    String testName = "sony" + i; 
    test [k] = testName; 
} 
} 
} 

- Comment résoudre ce problème? - Qu'est-ce qui cause ce bug?

Merci, Sony

Répondre

6

Vous devez initialiser votre tableau comme celui-ci, avant:

test = new String[5]; 

Chaque fois que vous utilisez un tableau, la machine virtuelle Java besoin de savoir qu'il existe et sa taille.

En Java, il existe de nombreuses façons d'initialiser les tableaux.

test = new String[5]; 

Créez simplement un tableau avec cinq emplacements. (Vous ne pouvez pas ajouter un sixième élément)

test = new String[]{"1", "2"}; 

Créer un tableau avec deux emplacements et qui contient les valeurs 1 et 2.

String[] test = {"1", "2"}; 

Créer un tableau avec deux emplacements et qui contient les valeurs 1 et 2. Mais comme vous l'avez remarqué, il doit être donné en même temps avec le tableau déclaration.

Dans les baies Java, statique, vous spécifiez une taille lorsque vous le créez et vous ne pouvez jamais le modifier.

0

Vous n'initialisez pas votre baie. Sur la troisième ligne, vous le définissez sur null, puis sur la sixième ligne, vous essayez de définir une chaîne pour un tableau qui n'existe pas. Vous pouvez initialiser le tableau comme ceci:

String test [] = new String[5]; 
3

Il y a trop d'erreurs dans votre code. 1) Qu'est-ce que k? 2) Vous devez d'abord initialiser la matrice de test.

String test[] = new String[5]; // or any other number 
Questions connexes