Как бы написать оператор, который будет непрерывно зацикливаться, пока массив содержит определенное значение в JAVA - PullRequest
0 голосов
/ 15 ноября 2018

Как мне написать оператор, который будет непрерывно повторяться до тех пор, пока массив содержит определенное значение? Мне нужно, чтобы он продолжал цикл до тех пор, пока массив содержит определенный символ, но прекрати цикл, если массив не содержит этих указанных значений символов.

У меня вроде есть это ниже, но я почти на 100% уверен, что это не сработает

for(int PieceChecker = 0, PieceChecker < 1){

        //Code that needs to be carried out

        if (Arrays.asList(board).contains(♖)){
        PieceChecker++;
        }
    }

Ответы [ 4 ]

0 голосов
/ 15 ноября 2018

Проще обрабатывать подобные случаи, которые включают только символы, используя строку, а не список. Используйте бесконечный цикл for и вырвитесь из него, как только вы обнаружите отсутствие этого символа в нем. Вы можете использовать indexOf для этой цели.

Вот фрагмент кода, который может вам помочь:

String board_string = new String(board);
for(;;) {
    if(board_string.indexOf('♖') == -1) {
        System.out.println("Breaking out of loop...");
        break;
    }
    else {
    //do something here
    }
}
0 голосов
/ 15 ноября 2018
while (Arrays.asList(board).contains("♖")) {
    //do something
}

Редактировать на основе комментария @ shmosel: -

Для таких примитивных массивов, как int[], вы можете использовать что-то подобное в условии while: -

IntStream.of(a).anyMatch(x -> x == 2)

Для примитивного массива char вы можете использовать это условие: -

new String(cArr).indexOf('♖') > -1
0 голосов
/ 15 ноября 2018

Из вопроса не ясно, что вы хотите зациклить простой массив символов ИЛИ список массивов символов. Здесь я придумал что-то, что могло бы помочь.

private static char[] myCharArray = new char[] { '\u00A9', '\u00AE', '\u00DD', 'A', 'B' };
private static Logger _log = Logger.getLogger(Test.class.getCanonicalName());


public static void main(String[] args) {

    // 1. Using character array directly
    for (int i = 0; i < myCharArray.length; i++) {
        while (myCharArray[i] == '\u00A9') {
            _log.info("Inside char array as this condition holds true");
        }
    }

    // 2. List of char arrays.
    List<char[]> list = Arrays.asList(myCharArray);
    for (char[] cs : list) {
        for (char c : cs) {
            while(c =='A'){
                _log.info("Inside charToList array as this condition holds true");  
            }
        }
    }
}
0 голосов
/ 15 ноября 2018

просто используйте цикл while.Базовая конструкция может быть

while (true) {
    // test situation
    if (!goodSituation()) {
        break;
    }
    // do something here
}
...