我正在尝试在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){}
答案 0 :(得分:18)
您收到的编译错误消息非常清楚。
For-each循环适用于数组和Iterable
。
String
不是数组。它包含字符数组,但它本身不是数组。
String
也没有实现接口Iterable
。
如果你想使用for-each循环来迭代字符到字符串中你必须说:
for(char c : str.toCharArray()) {}
答案 1 :(得分:2)
字符串不可迭代,请尝试String#GetBytes()
:
for (byte b : str.getBytes(yourCharSet)) {
}
答案 2 :(得分:2)
String
不可迭代。但是你可以将String
转换为char数组来迭代这样:
char[] fen = string.toCharArray();
for(char c : fen){
//do your work
}
答案 3 :(得分: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){
}