在 while 循环的表达式中,是否可以初始化一个变量,然后将其用作表达式的一部分?
代码可能更简单:
while (int a = someMethod(), a<b)
可以添加另一个方法,因此必须遵循:
private boolean whileLoopTest() {
int a = someMethod();
return a<b;
}
public void originalMethod() {
while (whileLoopTest()) {
//...
但这看起来并不那么整洁。
编辑 我也不想直接将该方法与我的变量进行比较,因为它是与多个变量进行比较,因此 if 会很长,难以阅读。我想要的一个更好的例子是:
while (int a = SomeClass.someStaticMethod(), -1<a && a<b)
在我的例子中这不是真的,但如果 someStaticMethod()
需要很长时间才能返回,这将是一个同样有效的问题 - 我只想调用它一次。
我对 StackOverflow 还很陌生,所以我不确定是否应该给出适用于此的其他情况。
最佳答案
int a;
while((a = someMethod()) < b){
//do something
}
其常见用途是从文件中读取:
BufferedReader fileIn = ...
String line;
while((line = fileIn.readLine()) != null){
//do something
}
fileIn.close();
/编辑
您可以为您的新场景执行此操作:
int a;
while(-1 < (a = SomeClass.staticMethod()) && a < b) {
//do something
}
一旦执行了&&
语句的左侧部分,SomeClass.staticMethod()
的返回值将存储在a
中,它继承了语句的右侧部分。
关于java - 在 while 表达式中初始化变量 - 而不是语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858962/