Java Пока л oop дополнительные условия - PullRequest
0 голосов
/ 14 июля 2020

В JavaScript вы можете добавить дополнительные условия, например:

var b = 0.0;
var q = (void 0);
var e = -1.0;

while(q = e, b > 32.0){

    console.log(q);
    b++;

}

Это означает, что q равно e.

Я попытался перефразировать код Java на

Float b = 0.0;
Float q = Float.NaN;
Float e = -1.0;

do{

    q = e;
    b++;

}while(b < 32.0);

Но похоже, что это не работает как версия JS.

Могу я просто добавить q = e к условиям while? Есть ли для него допустимый синтаксис Java?

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Нет оператора запятой в Java, и даже если бы он был, это было бы плохим стилем.

Есть способы добиться аналогичных результатов. Если вы определяете функцию, которая принимает любой параметр и всегда возвращает true:

<T> boolean trick(T any) {
    return true;
}

, вы можете использовать ее, чтобы подкрасться к выражениям присваивания в любом логическом контексте, который вы хотите:

while (trick(q = e) && b > 32.0){
    System.out.println(q);
    b++;
}

Но снова это будет считаться стилем ужасным . Не используйте это в реальном проекте.

0 голосов
/ 14 июля 2020

Java не имеет сверхгибкого оператора запятой, такого как JavaScript, поэтому вам придется разделить операторы на части. Это не плохо. while(q = e, b > 32.0) убогий.

Палка с обычным while l oop. A do-while l oop не подойдет, потому что он всегда будет выполнять b++ хотя бы один раз.

Я бы использовал double вместо float.

double b = 0.0;
double q;
double e = -1.0;

q = e;
while (b < 32.0) {
    b++;
    q = e;
}

И мы могли бы также инициализировать q, когда он объявлен:

double b = 0.0;
double e = -1.0;
double q = e;

while (b < 32.0) {
    b++;
    q = e;
}
...