Atsortingbuer une valeur de variable dans if-statement

Je me demandais s’il était possible d’atsortingbuer une valeur à une variable dans un opérateur conditionnel comme ceci:

if((int v = someMethod()) != 0) return v;

Y a-t-il un moyen de faire cela en Java? Parce que je sais que c’est possible dans des conditions de temps, mais je ne suis pas sûr si je le fais mal pour la déclaration if ou si c’est tout simplement impossible.

Les variables peuvent être affectées mais pas déclarées dans l’instruction conditionnelle:

 int v; if((v = someMethod()) != 0) return true; 

Vous pouvez atsortingbuer , mais pas déclarer , à l’intérieur d’un if :

Essaye ça:

 int v; // separate declaration if((v = someMethod()) != 0) return true; 

une affectation renvoie le côté gauche de l’affectation. donc oui. c’est possible. Cependant, vous devez déclarer la variable à l’extérieur:

 int v = 1; if((v = someMethod()) != 0) { System.err.println(v); } 

Oui, vous pouvez affecter la valeur de variable à l’intérieur si.

Je ne le recommanderais pas. Le problème est que cela ressemble à une erreur commune où vous essayez de comparer des valeurs, mais utilisez un seul = au lieu de == ou === .

Ce sera mieux si vous faites quelque chose comme ça:

 int v; if((v = someMethod()) != 0) return true; 

Je pense que votre problème est dû au fait que vous définissez la variable v dans le test. Comme expliqué par @rmalchow, cela fonctionnera vous changez en

 int v; if((v = someMethod()) != 0) return true; 

Il existe également un autre problème de scope variable. Même si ce que vous avez essayé était de travailler, quel serait le but? En supposant que vous puissiez définir la scope de la variable dans le test, votre variable v n’existerait pas en dehors de cette scope. Par conséquent, la création de la variable et l’atsortingbution de la valeur seraient inutiles, car vous ne pourriez pas l’utiliser.

Les variables existent uniquement dans la scope où elles ont été créées. Étant donné que vous atsortingbuez la valeur à utiliser par la suite, considérez l’étendue dans laquelle vous créez la variable afin qu’elle puisse être utilisée si nécessaire.

Oui, c’est possible. Considérez le code ci-dessous:

 public class Test { public static void main (Ssortingng[] args) { int v = 0; if ((v=dostuff())!=0) { System.out.printf("HOWDY\n"); } } public static int dostuff() { //dosomething return 1; } } 

J’espère que cela satisfera votre question.

Oui, il est possible d’atsortingbuer à l’intérieur si vérification conditionnelle. Mais votre variable aurait déjà dû être déclarée pour atsortingbuer quelque chose.

Vous pouvez affecter une variable à l’intérieur de l’instruction if , mais vous devez d’abord la déclarer.

Parce que je sais que c’est possible dans des conditions de temps, mais je ne suis pas sûr si je le fais mal pour la déclaration if ou si c’est tout simplement impossible.

ASTUCE: quel type de temps et si la condition devrait être ??

Si cela peut être fait avec while, cela peut être fait avec if statement comme weel, car les deux attendent une condition booléenne.