在java中以动态方式将对象存储在未分配的对象中

时间:2013-09-14 14:10:51

标签: java arrays

我遇到了一个问题,我必须在一个字符串数组中分配字符串对象但是问题是我不知道我将在这个数组中放入多少个字符串对象。 / p>

CODE

   static String[] decipheredMessage;
   static int pointer=0;

   // in another function i have this code
   if(sentenceFormationFlag==true) {
   // System.out.println(" " + word);  // prints the words after sentence formation                 
   // add the words to an array of strings
   decipheredMessage[pointer] = new String();
   decipheredMessage[pointer++] = word;
   return true;

我在这里做的是我已经声明了一个字符串数组,因为我不知道我的数组将包含多少个字符串,我动态创建字符串对象并将其分配给数组。

错误

$ java SentenceFormation 臂

Exception in thread "main" java.lang.NullPointerException
at SentenceFormation.makeSentence(SentenceFormation.java:48)
at SentenceFormation.makeSentence(SentenceFormation.java:44)
at SentenceFormation.makeSentence(SentenceFormation.java:44)
at SentenceFormation.main(SentenceFormation.java:16)

我不知道为什么我会遇到这个问题,任何人都可以帮我解决这个问题。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

如果你不知道你的阵列有多少元素,你可以使用像List这样的ArrayList实现。

static List<String> decipheredMessage = new ArrayList<>();
...
decipheredMessage.add("my new string");

查看List文档(上面链接)以查看可用的API 如果您使用的是Java 5或6,则需要在上面的斜角括号中指定类型,即new ArrayList<String>()

答案 1 :(得分:2)

动态数组在Java中不起作用。您需要使用集合框架的一个很好的例子。导入java.util.ArrayList

static ArrayList<String> decipheredMessage=new ArrayList<>();;
static int pointer=0;

// in another function i have this code
if(sentenceFormationFlag==true) {
// System.out.println(" " + word);  // prints the words after sentence formation                 
 // add the words to an array of strings
decipheredMessage.add(new String());
decipheredMessage.add(word);
return true;

答案 2 :(得分:1)

尝试类似这样的内容,并阅读列表

  List<String>  decipheredMessage = new ArrayList<String>();
   static int pointer=0;

   // in another function i have this code
   if(sentenceFormationFlag==true) {
   // System.out.println(" " + word);  // prints the words after sentence formation                 
   // add the words to an array of strings
   decipheredMessage. add("string1");
   decipheredMessage.add("string2");
   return true;