2011-08-21 2 views
-5

갑자기이 질문이 내 마음에 들었을 때 나는 Java에서 ternary operator 주위에서 놀고있었습니다. PHP에서 우리는 다음과 같은 주 문서에 (또는 태그) 몇 가지 명령을 넣어 다음 결정을 삼항 연산자를 사용 할 수 있습니다 (PHP 매뉴얼에서 예를.) : 이제비 스크립팅 언어의 스크립팅과 같은 동작

echo (true?'true':false?'t':'f'); 

를이 비슷한입니다 Java로 가능합니까? 마찬가지로, 아래 코드와 비슷한 것이 가능합니까?

jButton1.getText().equals("hi")?jLabel1.setText("one"):jLabel1.setText("two") 

원하는 것은 true/false 값에 따라 명령문 중 하나만 실행해야합니다. 나는 이것이 더 나은 if-else 구조를 사용하여 수행 할 수 있습니다 알아요,하지만 난 그냥 궁금 해서이 질문을 물었다.

+0

시도하면 어떻게됩니까? –

+4

이것은 "스크립팅"동작과 아무 관련이 없습니다. 그것은 단지 삼항 연산자입니다. –

+0

이 문은 부울 변수가없는 경우 netbeans에서 "not a statement"오류를 표시하고 ** boolean b1 = jButton1.getText(). equals ("hi")? jTextField1.setText (" one ") : jTextField1.setText ("two "); ** 그러면 유형이 호환되지 않는 오류가 표시됩니다. – buch11

답변

3

사용이 대신 :

jLabel1.setText(jButton1.getText().equals("hi") ? "one" : "two"); 

JLS에 따르면,이 연산자는 자바에서 conditional operator라고합니다. 당신은

무효 방법

0

또는의 호출로 두 번째 또는 세 번째 피연산자 표현 중 하나에 대한 컴파일 타임 오류가 발생하는 위의 링크를 읽어 볼 수 있습니다

jButton1.getText().equals ("hi") && jLabel1.setText ("one") || jLabel1.setText ("two"); 

JRL 솔루션은 훨씬 더 우아하지만 "안녕"에 따라 다른 라벨을 조작하고 싶다면 이러한 접근 방식이 필요할 수 있습니다.

0

자바에는 확실히 3 항 연산자가 있습니다. 당신이 그것을 올바르게 사용하고있는 것처럼 보입니다. 내게 문제가된다면 괄호로 놀아 보려고 할 것입니다. 그러나 옳은 것을 사용하고있는 것처럼 보입니다.

Java Term of the Week: Ternary Operator이 설명합니다.