Java цикл и проблема приращения - PullRequest
3 голосов
/ 24 декабря 2010

Может кто-нибудь сказать мне, в чем проблема в моей программе?

String a[],b[];
int c[] = new int[b.length];

for (int j = 0; j < a.length; j++) {
    for (int k = 0; k < b.length; k++) {
        if (b[k].equals(a[j])) {
            c[k]++;
        } else {
            c[k] = 0;
        }
    }
}

Я храню тысячи слов в HashMap. Теперь я хочу проверить в каждом файле, сколько раз встречалось одно слово из allWords.

Можете ли вы указать на ошибку в моей программе или подсказать, как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 24 декабря 2010

Я думаю, что эта строка сбрасывает ваши счетчики без необходимости:

newData[j] = 0;

Попробуйте удалить его:

for (int j = 0; j < oneFileWords.length; j++) {
    for (int k = 0; k < allWords.length; k++) {
        if (allWords[k].equals(oneFileWords[j])) {
            newData[j]++;
        }
    }
}

Если вы хотите вести отдельный подсчет для каждого слова в каждом файле, товам нужно будет использовать двумерный массив.

int newData[][] = new int[oneFileWords.length][allWords.length];

Затем вы можете получить к нему доступ, используя newData[j][k].

0 голосов
/ 24 декабря 2010

Вы можете считать слова, читая ваши файлы, и сохранять их на карте. Предполагая, что последним словом в файле является «-1», и в строке есть только одно слово, даже если слово «с днем ​​рождения», ясделать что-то вроде этого:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class StackOverflow {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Map<String, Integer> countedWords = new HashMap<String, Integer>();
    int numberOfWords = 0;
    String word = "";
    while (true) {
        word = scanner.nextLine();
        if (word.equalsIgnoreCase("-1")) {
            break;
        }
        if (countedWords.containsKey(word)) {
            numberOfWords = countedWords.get(word);
            countedWords.put(word, ++numberOfWords);
        } else {
            countedWords.put(word, 1);
        }
    }
    Iterator it = countedWords.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(pairs.getKey() + " = " + pairs.getValue());
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...