java - 在 while 表达式中初始化变量 - 而不是语句

标签 java if-statement

在 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/

相关文章:

java - 在 spring-data 项目中使用 @Version

mysql - Ruby on Rails IF 语句验证检查

java - 搜索方法帮助,

C++ switch 语句评估

java - 在十二生肖确定器中接收有效输入的无效 I/O

java - 为什么使用保留 fragment 来通过配置更改来保持状态?

java - 按代表时间的 2 列对 JTable 进行排序

java - “Your security settings have blocked a local application from running” Java 8

java - dropwizard 0.7 @Session 注释

java - 在 if 语句中将变量设置为值