我如何编写只要数组包含某个值就会连续循环的语句?只要数组包含特定字符,我就需要继续循环,但是如果该数组不包含这些字符值,则停止循环。
我在下面有这个,但我几乎100%确信它不起作用
for(int PieceChecker = 0, PieceChecker < 1){
//Code that needs to be carried out
if (Arrays.asList(board).contains(♖)){
PieceChecker++;
}
}
答案 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