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

2022-09-02 19:53:34

可能的副本:
声明未知大小的数组

我正在使用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();
 }

答案 1

请改用ArrayList

List<String> list = new ArrayList<String>();

它会自动增长。

要检查重复项,可以使用 (),它不允许重复元素。SetHashSet

更新

我在你的代码中看到几个问题:

List<String> sentence = ArrayList<String>;

您缺少之后的 .new=

sentence += word;

这只有在 是 .这是一个,所以你应该在那里使用方法sentenceStringListList.add

sentence.add(word);

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


答案 2

只需看到下面的示例,您将获得有关如何声明未知大小的字符串数组的想法。

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

例:

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();

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