2016-02-12 1 views
0

Ceci est essentiellement un petit code que j'écris pour la pratique qui nécessite que j'utilise StringTokenizer. J'ai déjà fait le même genre de programme, mais maintenant, quand je stocke les chaînes dans un tableau et que j'essaie de les imprimer, c'est une exception de pointeur nul. De l'aide?Pourquoi l'erreur null est-elle affichée dans mon programme? Stringtokenizer to array

import java.util.*; 
public class board1 
{ 
    String key; 
    String m[]; 

    //function to accept the sentence 
    void getsent() 
    { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter a sentence terminated by'.' or '?'"); 
     String take=in.nextLine(); 
     StringTokenizer taken=new StringTokenizer(take); 
     int numtokens=taken.countTokens(); 
     String m[]=new String[numtokens]; 
     for(int i=0;i<m.length;i++) 
     { 
      m[i]=taken.nextToken(); 
     } 
     for(int i=0;i<m.length;i++) 
     { 
      System.out.print(m[i]); 
     } 
    } 

    // function to display 
    void display() 
    { 
     System.out.println("The words seperately right now are:"); 
     for(int i=0;i<m.length;i++) 
     { 
      System.out.print(m[i]+"\t"); 
      System.out.println(); 
     } 
    } 

    // main to get functions 
    public static void main(String args[]) 
    { 
     board1 ob= new board1(); 
     ob.getsent(); 
     ob.display(); 
    } 
} 

Répondre

2

Vous n'êtes shadowing la m variable. Remplacer

String m[] = new String[numtokens]; 

avec

m = new String[numTokens]; 
+0

Merci beaucoup! Cela m'a beaucoup aidé et va m'aider pour mes prochaines finales! – Sree

0

Je pense que parce que vous êtes des propriétés d'ombrage. Vous avez un tableau appelé m dans lequel vous placez des jetons dans getSent, mais display utilise le tableau m défini dans la classe à laquelle vous n'avez rien ajouté.

Imprimez la taille de m dans l'affichage, cela vous montrera que vous n'ajoutez rien à la propriété appelée m.

+0

Merci :) vous êtes les meilleurs! – Sree