2009-07-22 2 views
1

자바 과정 신청서를 작성 중입니다. 나는 완전한 초보자이며 과정과 웹에서 배운 내용을 벗어날 것입니다. 응용 프로그램이 일부 동작을 전시하고 무엇이 그것을 일으키는 지 잘 모르겠습니다. 응용 프로그램은 GUI 기반이며 사용자 입력에 대한 계산을 수행합니다. 액션 청취자 섹션에 대한 , 나는 세트가있는 경우 다음과 같은 문구 : 모두 같은 행에자바 애플리케이션 (사례 권장)

"이 버튼은이 작업을 수행 할 경우이 버튼이 을 할 경우". 버튼이 눌려지면 응용 프로그램이 if 문을 실행하는 대신 모든 if 문을 실행하는 것처럼 보입니다.

나는 이런 종류의 케이스/스위치 구조를 사용하여 더 나을 수 있을까요? 필요한 경우

나는이 사이트의 주위에 새로운 오전 그 일이 허용하는 경우 확실하지 않다, 내 코드를 게시 할 수 있습니다.

+3

등이

if (condition); { ... } 

같은 문장 예, 게시하시기 바랍니다 경우 당신의 코드. – William

+0

코드를 게시 할 수 있습니다 – Ariel

+0

else-ifs를 사용하고 있습니까? 그렇지 않다면,해야합니다. – AlbertoPL

답변

1

당신은 아마 하나의 액션 청취자를하지 말았어야 - 각 컨트롤에 대해 별도의 하나를 더 읽기 코드를 유지하는 데 도움이 생성.

당신의 컨트롤 그러나, 많은 코드를 공유하는 경우, (은 if 문 전후 물건) 다음은 의미가 그런 식으로 할 수 있도록 수 있습니다. 이 경우 if/elseif 여야합니다. (문이 각 서브 클래스로 전환하면 각 내부의 물건을)

또한, 본격적인 클래스 (오히려 익명의 내부 클래스보다) 청취자를 만드는 것은 물론 재사용 코드를 할 수 있습니다. 이것은 지금까지 배운 것 이상일 수 있습니다.

편집 : (실제 질문에 대한 직접적인 대답) 문제로 지금까지

의의 모든 실행하지 않아야하는 경우를 제외하고 귀하의 경우의 끝에 세미콜론을 사용하고 말했다 중 하나 drs9222의 대답 올바른지 또는 if 문이 잘못된 것을 테스트하고 있는지 확인하십시오.

당신은 당신이 테스트 무엇을 게시 할 수 있습니다,하지만 당신은 == 또는 .equals는 event.getSource()를 사용하여로 알려진 "버튼"개체를 비교해야합니다. 비교중인 각 Button 객체는 다르기 때문에 하나만 실행해야합니다.

+0

응용 프로그램이 너무 작아서 한 명의 청취자가 괜찮을 것이라고 생각했습니다. 그때 이래로, 그것은 다소 성장했다. 그리고 나는 결국 그것을 할 수있다. 학습의 정신으로 나는 if 문이 왜 그렇게 이상하게 작동하는지 파악하고 싶다. 하위 클래스를 만드는 것은 내 마음을 넘어 섰다. 귀하의 의견을 보내 주셔서 감사합니다. –

+0

+1 동작 하나, 하나의 동작 수신기. -10 "본격적인 수업". –

+0

@tom 익명의 내부 클래스는 코드 재사용으로 좋지 않습니다. 구성원과 모든 구성원과 함께 재사용이 가능한 전체 클래스로 만들어서 개선하지 않는 항목은 거의 없습니다. 저는 리스너가 전체 클래스가 아니고 리팩토링을 볼 수 없다는 것을 결코 고려하지 않았기 때문에 크기가 1/10 인 단일 클래스로 그와 같은 태도를 가진 사람들이 작성한 코드를 종종 리펙토링했습니다. 악한 복사/붙여 넣기/편집/반복 트릭을 했어. –

2

코드를 보지 않고도 확실히 말할 수는 없지만 항상 익숙한 것은 if이 아니라 else if을 사용했습니다. 여러 조건이 만족되면 관련 코드가 모두 실행되었습니다. 첫 번째 매치 만 실행하려면 if-else을 사용하여 다음 명령문이 실행되지 않도록하십시오. 난 당신의 코드를 볼 때까지

+0

코드는 http://pastebin.com/m70593cb3에서 확인할 수 있습니다. 드롭 다운 메뉴에는 3 개의 if 문이 있으며 각 단추에는 고유 한 if 문이 있습니다. 코드를 보면 더 이해할 수 있습니다. 지금까지 귀하의 통찰력에 감사드립니다. –

3

난 당신이 작성 될 수는 있지만 인정 새로움 주어진 추측 할 것이다 당신의 대신이

if (condition) 
{ 
    ... 
} 
+0

이전에 실수했기 때문에 문제가 발생할 수 있음을 알고 있지만 두 문장이 세미콜론으로 끝나지 않습니다. 이 코드는 http://pastebin.com/m70593cb3에서 찾아 볼 수 있습니다. –

+3

매우 빠른 시일이 지나면 141, 169 및 198 번 라인에이 문제가 있습니다. – drs9222

+0

아, 어떻게 여러 번 그리워 했나요? ... 죄송합니다. 다시 살펴보고 거기서 보았습니다. 내 눈이 게으르다 고합니다.) 감사합니다. –