我将如何编写一条只要数组在JAVA中包含某个值就将连续循环的语句

时间:2018-11-14 23:49:32

标签: java arrays loops for-loop chess

我如何编写只要数组包含某个值就会连续循环的语句?只要数组包含特定字符,我就需要继续循环,但是如果该数组不包含这些字符值,则停止循环。

我在下面有这个,但我几乎100%确信它不起作用

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

        //Code that needs to be carried out

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

4 个答案:

答案 0 :(得分:0)

只需使用while循环即可。基本构造可能是

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

答案 1 :(得分:0)

从问题上来看,您是否想遍历简单的char数组或字符数组列表尚不清楚。 在这里,我想出了一些可能有用的方法。

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");  
            }
        }
    }
}

答案 2 :(得分:0)

通过使用字符串而不是列表,可以更轻松地处理仅涉及字符的此类情况。使用无限的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
    }
}

答案 3 :(得分:-1)

while (Arrays.asList(board).contains("♖")) {
    //do something
}
根据@shmosel的评论

编辑:-

对于像int[]这样的基本数组,可以在while条件下使用类似这样的东西:-

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

对于原始char数组,可以使用以下条件:-

new String(cArr).indexOf('♖') > -1