这本质上是我为练习而编写的一个小代码,需要我使用StringTokenizer。我以前做过同样的程序,但现在当我将字符串存储在数组中并尝试打印它们时,它会显示空指针异常。有什么帮助吗?
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();
}
}
你正在遮蔽变量m
.取代
String m[] = new String[numtokens];
跟
m = new String[numTokens];
我认为
是因为您在着色属性。 你有一个名为 m 的数组,您将令牌放入 getSent,但显示使用的是您尚未添加任何内容的类中定义的 m 数组。
在显示中打印出 m 的大小,这将显示您没有向名为 m 的属性添加任何内容。