如何声明未知大小的字符串数组?

use*_*178 18 java arrays string initialization

可能重复:
声明未知大小的数组

我正在使用Java,我正在尝试将一个句子输入到字符串数组中.我正在对它进行标记并确定字数.但是,我需要将每个单词添加到字符串数组中,以确定是否存在重复项.如果我不知道单词计数直到程序后期,我不知道如何初始化我的数组.

  //Declares variables
  Scanner scan = new Scanner (System.in);
  int withoutdup = 0, wordCount = 0;
  String line, word; 
  StringTokenizer tokenizer;
  List<String> sentence = ArrayList<String>;

  //Asks user for input
  System.out.println ("Please enter text. Enter DONE to finish.");
  line = scan.next();


  //Tokenizes the string and counts the number of character and words
while (!line.equals("DONE"))
 {
     tokenizer = new StringTokenizer (line);
     while (tokenizer.hasMoreTokens())
     {
        word = tokenizer.nextToken();
        wordCount++;
        sentence += word; 
     }
     line = scan.next();
 }
Run Code Online (Sandbox Code Playgroud)

Bhe*_*ung 31

ArrayList改用

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

它会自动增长.

要检查重复项,可以使用a Set(HashSet),它不允许重复元素.

更新

我在你的代码中看到了一些问题:

List<String> sentence = ArrayList<String>;
Run Code Online (Sandbox Code Playgroud)

你错过了new=.

sentence += word;
Run Code Online (Sandbox Code Playgroud)

只有在这样的情况下才有sentenceString.这是一个List你应该List.add在那里使用方法

sentence.add(word);
Run Code Online (Sandbox Code Playgroud)

现在wordCount++;也是多余的sentence.size()会告诉你多少字.


小智 6

只需看下面的示例,您将了解如何声明未知大小的字符串数组.

首先,使用ArrayList存储字符串,每次调用.add方法时,ArrayList大小增加一个元素.当您填充ArrayList时,使用ArrayList size()方法并创建String数组并从中调整大小.但请确保ArrayList中的每个元素都是一个Object,这就是您需要将每个元素转换为String的原因.

例:

ArrayList list = new ArrayList();

for( int i = 0; i < 100; i++ )

list.add( "stuff" );

String[] strArray = new String[ list.size() ];

for( int j = 0; j < strArray.length; j++ )

strArray[ j ] = list.get( j ).toString();
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.这只是一种方式,但我认为可能有另一种更有效的方法,你可以做同样的事情.