为什么while循环引发未解决的引用错误,而for循环在kotlin中运行良好
刚在与kotlin合作时遇到问题。检查下面的代码示例。下面的代码执行时没有编译错误但最初我在下面的代码中用while代替for循环。这就是向元素抛出未解决的引用错误 为什么我们在科特林有如此奇怪和意外的行为。刚从科特林开始请原谅为什么while循环引发未解决的引用错误,而for循环在kotlin中运行良好,kotlin,Kotlin,刚在与kotlin合作时遇到问题。检查下面的代码示例。下面的代码执行时没有编译错误但最初我在下面的代码中用while代替for循环。这就是向元素抛出未解决的引用错误 为什么我们在科特林有如此奇怪和意外的行为。刚从科特林开始请原谅 fun main(args: Array<String>) { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ val myarr=intArrayO
fun main(args: Array<String>) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
val myarr=intArrayOf(1,2,3,4)
for(element in myarr){
println(element)
}
fun main(args:Array){
/*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/
val myarr=intArrayOf(1,2,3,4)
for(myarr中的元素){
println(元素)
}
}
下面是我遇到错误的代码。我的问题是为什么它在for循环中工作而不是在while中工作
fun main(args: Array<String>) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
val myarr=intArrayOf(1,2,3,4)
while(element in myarr){
println(element)
}
fun main(args:Array){
/*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/
val myarr=intArrayOf(1,2,3,4)
while(myarr中的元素){
println(元素)
}
}在while循环中使用
是不好的。但是,您可以执行以下操作:
fun main(args: Array<String>) {
var i = 0
val myarr=intArrayOf(1,2,3,4)
while (i < myarr.size)
println(myarr[i++])
}
fun main(args:Array){
变量i=0
val myarr=intArrayOf(1,2,3,4)
而(i
参考:
而
循环需要布尔参数<在
中的code>不是迭代器在本例中,它相当于中的布尔检查。例如:
fun demo(){
val x = 2;
val l = listOf(1, 2, 3);
while(x in l){
}
}
请注意,这是一个可怕的代码,它将导致无限循环。但它确实向你表明了这一点;在while循环中,中的表示布尔值,而不是范围。这也适用于阵列
它是未解析引用的原因是您正在执行布尔检查,而不是for循环。对于循环,自动声明字段,其中作为while
,但如果需要现有字段(即val x=something
)或直接声明(即while(2 in l)
)。后者删除变量名
因此,而
循环不会像那样为
使用iterables。您有五个迭代iterable的选项:
for(i在0中直到list.size)
-list.size
可以是任何调用,只要它是int
for(列表中的项目)
-这要求列表是一个可编辑的李>
您必须在
代码时显示。您是否定义过元素
?除非您发布while循环以查看不同之处或可能导致问题,否则我们无法提供帮助,while
循环不支持in
语法。要实现所需的功能,请使用for
循环。@Carcigenicate元素在上面的for循环代码中没有定义,但它起了作用,为什么不在编写for(element…
时在for
中定义它呢。
var i = 0;
while(i < list.size) {
// remember to increment `i`, otherwise it's an infinite loop
}
fun main(args: Array<String>) {
val myarr=intArrayOf(1,2,3,4)
var element = 0; //if this is in the list, the the while loop is an infinite loop.
while(element in myarr){
println(element)
}
}