if-statement 내부에 변수 값 할당
다음과 같이 조건부 연산자 내부에 변수를 할당할 수 있는지 궁금합니다.
if((int v = someMethod()) != 0) return v;
자바에서 이걸 할 수 있는 방법이 있나요?왜냐면 난 그게 가능하단걸 알고있거든while
조건들이지만, 만약을 위해 잘못하고 있는 건지, 그게 불가능한 건지 모르겠어요.
변수를 할당할 수 있지만 조건문 내에서 선언할 수는 없습니다.
int v;
if((v = someMethod()) != 0) return true;
내부에는 할당할 수 있지만 선언할 수는 없습니다.if
:
이것을 시험해 보세요.
int v; // separate declaration
if((v = someMethod()) != 0) return true;
할당은 할당의 왼쪽을 반환합니다.그래서: 네, 가능합니다.단, 변수를 outside로 선언해야 합니다.
int v = 1;
if((v = someMethod()) != 0) {
System.err.println(v);
}
예, 다음과 같은 경우 내부 변수 값을 할당할 수 있습니다.
나는 그것을 추천하지 않을 것이다.문제는 값을 비교하려고 하지만 단일 값을 사용하는 일반적인 오류처럼 보인다는 것입니다.=
대신==
또는===
.
다음과 같은 작업을 수행하는 것이 좋습니다.
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 문을 weel로 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/16148580/assign-variable-value-inside-if-statement
'programing' 카테고리의 다른 글
생년월일을 기준으로 나이를 계산하다 (0) | 2023.01.24 |
---|---|
MySQL InnoDB가 테이블에서 데이터 행을 삭제한 후 디스크 공간을 해제하지 않음 (0) | 2023.01.24 |
MySQL에서 두 데이터 시간 간의 차이 계산 (0) | 2023.01.24 |
JavaScript에서 큰 숫자에 대한 과학적 표기법을 피하는 방법은 무엇입니까? (0) | 2023.01.24 |
커스텀 리스트 Android의 아이템에 대한 클릭 문제 표시 (0) | 2023.01.24 |