作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是编程新手。我很难理解这段代码:
public static boolean onCampus(String name)
{
boolean invalidResponse = true;
do{
System.out.println("Is "+name+ " living on campus? (yes/no)");
String response = in.nextLine();
if(response.equalsIgnoreCase("yes"))
return true;
else if (response.equalsIgnoreCase("no"))
return false;
else
System.out.println("Invalid response.");
} while(invalidResponse);
return false;
}
我不明白的是,在用户输入可接受的响应的情况下,invalidResponse
在哪里被赋值为 false
?最后一个 return false;
是什么?为什么它在 do-while 语句之后?
最佳答案
这有点反模式 - 循环是无限的,永远不会“正常”终止。相反,一旦您获得有效响应,您只需调用 return
,然后退出该方法,从而终止循环。
循环后的return false
是一个编译限制。在 java 中,如果方法返回一个值,每个可以想到的分支都必须包含一个 return
语句(或者准确地说是一个 throw
语句)。在编译时,Java 不会“知道”循环可能永远不会终止,因此它会强制您在该分支中有一个 return 语句(即,假设循环终止时没有 if
或 else if
正在执行的分支)。
关于java - Do-while 语句 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33090969/
我是一名优秀的程序员,十分优秀!