-4

我正在尝试在 Java 中创建一个 for-each 循环,该循环迭代字符串中的每个字符。当我尝试这样做时,我在 NetBeans 中得到一个错误:

for-each not applicable to expression type
required:array or java.lang.Iterable, found java.lang.String

这是我收到错误的 Java 代码:

for(char c : fen){
}

fen是一个字符串

我正在尝试了解用 C# 编写的游戏的源代码,并且那里的 foreach 循环有效:

foreach(char in fen){}
4

4 回答 4

18

您收到的编译错误消息非常清楚。

For-each 循环适用于数组和Iterable. String不是数组。它包含字符数组,但它本身不是数组。 String也没有实现接口Iterable

如果您想使用 for-each 循环将字符迭代到字符串中,您必须说:

for(char c : str.toCharArray()) {}

于 2012-05-20T12:18:15.740 回答
2

字符串不可迭代,请尝试String#GetBytes()

for (byte b : str.getBytes(yourCharSet)) {

}
于 2012-05-20T12:16:36.113 回答
2

String不可迭代。但是您可以转换String为 char 数组进行迭代,如下所示:

char[] fen = string.toCharArray();
for(char c : fen){
   //do your work
}
于 2012-05-20T12:19:16.933 回答
1

for-each 循环不会按预期工作。供参考http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

char[] fen = //define array here
for(char c : fen){
}
于 2012-05-20T12:16:13.850 回答