it-swarm.com.de

Weisen Sie den Variablenwert in der if-Anweisung zu

Ich habe mich gefragt, ob es möglich ist, einer Variablen einen Wert innerhalb eines bedingten Operators wie folgt zuzuweisen:

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

Gibt es eine Möglichkeit, dies in Java zu tun? Weil ich weiß, dass es unter while Bedingungen möglich ist, aber ich bin nicht sicher, ob ich es bei der if-Anweisung falsch mache oder ob es einfach nicht möglich ist.

81

Variablen können zugewiesen, aber nicht in der bedingten Anweisung deklariert werden:

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

Sie können zuweisen, aber nicht deklarieren in einem if:

Versuche dies:

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

eine Zuweisung gibt die linke Seite der Zuweisung zurück. also ja. es ist möglich. Sie müssen die Variable jedoch außerhalb deklarieren:

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

Ja, Sie können den Wert der Variablen innerhalb von if zuweisen.

Ich würde es nicht empfehlen. Das Problem ist, dass es wie ein häufiger Fehler aussieht, bei dem Sie versuchen, Werte zu vergleichen, aber einen einzelnen = Anstelle von == Oder === Verwenden.

Es ist besser, wenn Sie so etwas tun:

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

Ja, das ist möglich. Betrachten Sie den folgenden Code:

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

Ich hoffe das wird deine Frage befriedigen.

2
Karthik Rk

Ich glaube, dass Ihr Problem auf die Tatsache zurückzuführen ist, dass Sie die Variable v innerhalb des Tests definieren. Wie von @rmalchow erklärt, funktioniert es, wenn Sie es in ändern

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

Es gibt auch ein anderes Problem des variablen Bereichs. Selbst wenn das, was Sie versuchten, funktionieren würde, worum geht es dann? Angenommen, Sie könnten den Variablenbereich innerhalb des Tests definieren, dann würde Ihre Variable v außerhalb dieses Bereichs nicht existieren. Daher wäre es sinnlos, die Variable zu erstellen und den Wert zuzuweisen, da Sie sie nicht verwenden könnten.

Variablen existieren nur in dem Bereich, in dem sie erstellt wurden. Da Sie den Wert für die spätere Verwendung zuweisen, sollten Sie den Bereich berücksichtigen, in dem Sie die Variable erstellen, damit sie bei Bedarf verwendet werden kann.

2
rlinden

Ja, es ist möglich, eine bedingte Prüfung zuzuweisen. Ihre Variable sollte jedoch bereits deklariert worden sein, um etwas zuzuweisen.

1
IndoKnight

Sie können eine Variable innerhalb der if -Anweisung zuweisen, müssen diese jedoch zuerst deklarieren

0
user2256686

Weil ich weiß, dass es unter normalen Bedingungen möglich ist, aber ich bin nicht sicher, ob ich es bei der if-Anweisung falsch mache oder ob es einfach nicht möglich ist.

TIPP: welcher Typ während und ob Bedingung sein soll ??

Wenn es mit while gemacht werden kann, kann es mit if-Anweisung als weel gemacht werden, da beide eine boolesche Bedingung erwarten.

0
PermGenError