那为什么找到成立的name_tokick之前的循环里else中语句从未执行
时间: 2024-04-21 20:29:47 浏览: 13
如果在找到符合条件的 `name_tokick` 之前,`else` 分支中的语句从未执行,那么说明 `name_tokick` 在 `Server.list_name` 中的位置在循环的后面。在这种情况下,只有在循环遍历到 `Server.list_name` 的最后一个元素时,才会执行 `else` 分支中的语句,因为此时已经遍历完了整个集合,找不到符合条件的 `name_tokick`。
举个例子,假设 `Server.list_name` 中有三个元素,分别为 "Tom", "Jerry" 和 "Mike",而 `name_tokick` 的值为 "John"。那么循环第一次比较的是 "Tom",第二次比较的是 "Jerry",第三次比较的是 "Mike",都不符合条件,因此 `else` 分支中的语句都不会被执行。只有在循环到最后一个元素 "Mike" 时,才会执行 `else` 分支中的语句,输出 "聊天室无此聊客。"。
相关问题
for(String name: Server.list_name) if(name.equals(name_tokick)) { del(name); massage = "已将["+name+"]移出聊天室。"; break; }else { massage = "聊天室无此聊客。"; }那为什么遍历到第3个才找到符合if条件的name_tokick却从没有输出else中的语句?
这是因为 `else` 分支中的语句会在每次遍历中被执行,所以如果 `name_tokick` 在 `Server.list_name` 中的任意一个位置被找到,那么 `else` 分支中的语句就不会被执行了。也就是说,只要找到符合条件的 `name`,就会执行 `if` 分支语句,然后跳出循环。
如果 `name_tokick` 不在 `Server.list_name` 中,那么 `if` 条件一直不成立,那么每次遍历都会执行 `else` 分支语句,但是在最后一次遍历之后,`massage` 的值会被赋值为 "聊天室无此聊客。",因此只会输出一次。如果 `name_tokick` 在 `Server.list_name` 中,那么只会执行一次 `if` 分支语句,输出 "已将["+name+"]移出聊天室。",然后跳出循环,不会继续执行 `else` 分支语句。
那如果if多次一直不成立,else中的语句执行几次?
如果 `if` 多次不成立,那么 `else` 分支的语句会在每次循环中被执行,因此会执行多次。具体执行的次数取决于 `Server.list_name` 中元素的数量以及 `name_tokick` 是否在其中,如果 `name_tokick` 不在 `Server.list_name` 中,则 `else` 分支的语句会被执行 `Server.list_name` 中元素的数量次数;如果 `name_tokick` 在 `Server.list_name` 中,则 `else` 分支的语句不会被执行。