Я считаю, что из-за разницы это не работает так, как мне бы хотелось. Есть ли способ, которым я могу сделать эту работу? - PullRequest
0 голосов
/ 03 ноября 2019
public char whatsAtPos(BoardPosition pos) {
        char keyChar = ' ';
        for (Map.Entry<Character, List<BoardPosition> > m: board.entrySet() ) {
            //System.out.println(m.getKey() + "," + m.getValue());
            if (m.getValue().contains(pos)){
                System.out.println("Key: " + m.getKey());
                keyChar = m.getKey();
            }
        }
        return keyChar;
    }

Из-за того, как работает видимость в java, keyChar никогда не изменяется на m.getKey в этом операторе if. Он всегда сохраняет свой инициализированный символ ''. Что я могу сделать, чтобы сделать эту работу так, как я хотел? Возможно ли это?

1 Ответ

0 голосов
/ 03 ноября 2019

Если то, что вы хотите, это просто один вывод char, почему бы вам не разорвать ваш цикл, если условие выполнено ...?

        if (m.getValue().contains(pos)){
            System.out.println("Key: " + m.getKey());
            keyChar = m.getKey(); 
            break;    //Terminate loop
        }
...