Java 使用其他数组进行数组增量

Java 使用其他数组进行数组增量,java,arrays,Java,Arrays,下面是我针对simpleish数组问题的代码,我必须将一个字符串放入一个数组中,然后扫描数组中的唯一单词,将它们放入一个单独的数组中,并计算第三个数组(即最后一个数组)中字符串中有多少个单独的唯一单词。我可以让它打印出字符串,但它可以计算每个单词,但不能计算唯一的单词。我认为问题在于if语句,或者uwords增量。 非常感谢您的帮助,但如果可能的话,我更愿意给出答案的提示,而不仅仅是答案 String[] words = text.split(" "); String[] uwords = n

下面是我针对simpleish数组问题的代码,我必须将一个字符串放入一个数组中,然后扫描数组中的唯一单词,将它们放入一个单独的数组中,并计算第三个数组(即最后一个数组)中字符串中有多少个单独的唯一单词。我可以让它打印出字符串,但它可以计算每个单词,但不能计算唯一的单词。我认为问题在于if语句,或者uwords增量。 非常感谢您的帮助,但如果可能的话,我更愿意给出答案的提示,而不仅仅是答案

String[] words = text.split(" ");

String[] uwords = new String[words.length];
int[] wordcount = new int[words.length];

 for(int i=0; i<words.length; i++){
            for(int e = 0; i<words.length; e++){ //loop to count individual words
                if(words[i].equals(uwords[e])){ //If word in array is contained in the unique words arrary then increment
                    wordcount[wordcounter] = wordcounter+ 1;
                }else{ //else (word is not contained in uwords) add to uwords and increment
                    uwords[e] = words[i];
                    wordcount[i] = wordcount[ + 1];
                }

            }

            System.out.println(uwords[i] + ": " + wordcount[i]);

一般来说,使用两个或多个并行数组(其中对应索引上的元素用于单个对象)是一种糟糕的设计实践

我会尝试使用一个映射,其中每个键都是一个唯一的单词,它的关联值是它的计数。然后,循环将很简单:

Map<String, Integer> uWords = new HashMap<String, Integer>();
for(int i=0; i<words.length; i++){
    String uWord = uWords.get(words[i])
    Integer count = uWords.get(uWord);
    if(count != null){
        count++;
    }
    else{
        count = 1;
    }
    uWords.put(uWord,count);
}
然后,你可以用上千种方法处理地图,找到你需要的东西。

首先

  for(int e = 0; i<words.length; e++)
这是一个无止境的循环

有一种更简单的方法可以做到这一点。只需使用一个集合=新集合 遍历单词数组一次,并将所有单词添加到集合中,它将自动添加不在其中的单词

然后可以继续调用集合中的每个项,并使用for-each循环进行输出。
它还有一个length属性来获取字数。

感谢您提供的伪代码,它使回答更容易。问题是

    if word exists in unique word array
        Increment corresponding count in unique word count array 
    else
        Add new unique word in unique word array
        Increment corresponding count in unique word count array 
不符合

    for(int e = 0; i<words.length; e++){ //loop to count individual words
            if(words[i].equals(uwords[e])){ //If word in array is contained in the unique words arrary then increment
                wordcount[wordcounter] = wordcounter+ 1;
            }else{ //else (word is not contained in uwords) add to uwords and increment
                uwords[e] = words[i];
                wordcount[i] = wordcount[ + 1];
            }

        }

您需要首先遍历uwords中的所有单词,以计算唯一数组中存在的布尔表达式单词,然后执行if语句

布谷鸟上空飞过蓝莓,收费桥下躺着土豆饼。嘿,谢谢你的回答,我正在上一年级的编程课程,我们刚刚被介绍到阵列,所以没什么先进的!我想我需要使用数组,如果有帮助的话,我已经添加了伪代码!也改变了无限循环,所以
    for(int e = 0; i<words.length; e++){ //loop to count individual words
            if(words[i].equals(uwords[e])){ //If word in array is contained in the unique words arrary then increment
                wordcount[wordcounter] = wordcounter+ 1;
            }else{ //else (word is not contained in uwords) add to uwords and increment
                uwords[e] = words[i];
                wordcount[i] = wordcount[ + 1];
            }

        }