Подтвердить что ты не робот

Назначение значения переменной внутри оператора if

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Попробуйте следующее:

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

Ответ 7

Да, это возможно. Рассмотрим следующий код:

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

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

Ответ 8

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

Ответ 9

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

СОВЕТ: какой тип while и если условие должно быть?

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