Присвоить значение переменной внутри if-оператора [дубликат]



этот вопрос уже есть ответ здесь:



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



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



есть ли способ сделать это в Java? Потому что я знаю это возможно в while условия, но я не уверен, что я делаю это неправильно для if-оператора или если это просто невозможно.

523   9  

9 ответов:

переменные могут быть назначены, но не объявленные внутри условного оператора:

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

Вы можете назначение, но не объявить внутри if:

попробуйте это:

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

назначение возвращает левую часть задания. Итак: да. это возможно. однако вам нужно объявить переменную снаружи:

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

Да, вы можете назначить значение переменной внутри if.

Я бы не рекомендовал его. Проблема в том, что это похоже на распространенную ошибку, когда вы пытаетесь сравнить значения, но используете один = вместо == или ===.

будет лучше, если вы сделаете что-то вроде этого:

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

Я считаю, что ваша проблема связана с тем, что вы определяете переменную v внутри теста. Как объяснил @rmalchow, он будет работать, вы измените его на

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

существует также еще одна проблема переменной области. Даже если то, что вы пытались работать, какой смысл? Предполагая, что вы можете определить область переменных внутри теста, ваша переменная v не будет существовать вне этой области. Следовательно, создание переменной и присвоение значения было бы бессмысленным, ибо вы не сможете его использовать.

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

Да, это можно сделать. Рассмотрим код ниже:

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; 
    }       
}          

Я надеюсь, что это удовлетворит ваш вопрос.

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

вы можете назначить переменную внутри if заявление, но вы должны объявить ее первой

потому что я знаю, что это возможно в условиях while, но я не уверен, если Я делаю это неправильно для if-заявления или если это просто невозможно.

подсказка: что типа пока и если условие должно быть ??

Если это можно сделать с помощью while, это можно сделать с помощью оператора if как weel, поскольку оба они ожидают логическое условие.

Comments

    Ничего не найдено.