2011-01-05 4 views
1

여기 간단한 예제 코드와 함께 내 질문은 :Java에서 (JOptionPane.showInputDialog) 내의 ("취소") 버튼에 sepecifc 작업을 할당하는 방법은 무엇입니까?

double num = 0.00; 

try 
{ 
    num = Double.parseDouble(JOptionPane.showInputDialog("Enter your num:")); 

} 

catch (Exception e) 
{ 
    System.err.println("Error: Invalid Input!"); 
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!", 
    "Error", JOptionPane.ERROR_MESSAGE); 
} 

//Validate the num 

if (num > 0.0 && num <= 1000.00) 
{ 
    functionA(); 
} 

else if (deposit <= 0.0 || deposit > 1000.00) 
{ 
System.err.println("Error: out of range"); 
} 

* 위의 코드의 문제점은 내가 "취소"버튼을 클릭하면 프로그램이 모두 오류를 타격이다 : (범위의 아웃 및 유효하지 않은 입력).

어떻게 해결할 수 있을지 제안 해주세요.

답변

4

먼저 사전에

덕분에, 당신은 입력이 null의 경우 확인해야합니다. 그렇지 않다면 parseDouble을 사용합니다. 이처럼

:

try 
{ 
    String i = JOptionPane.showInputDialog("Enter your num:"); 
    if (i != null) 
     num = Double.parseDouble(i); 
} 

또한, 당신이 그랬던 것처럼, "예외"를 넣어 예외를 잡을하려고합니다. 가능한 한 많이 찾고있는 예외를 지정하십시오. 이 경우에는 예외 대신 NumberFormatException을 사용해야합니다.

catch (NumberFormatException e) 
{ 
    System.err.println("Error: Invalid Input!"); 
    JOptionPane.showMessageDialog(null, "Error: Invalid Input!", 
    "Error", JOptionPane.ERROR_MESSAGE); 
} 
+1

고마워요! 맑은. – CompilingCyborg

+0

이러한 제안 사항은 사용자가 취소 할 때 발생하는 문제를 해결하지만 취소를 누르거나 숫자 형식 예외를 포착 한 후 범위를 벗어나는 온난화 문제를 해결하지 못합니다. 유효성 검사 코드를 try 블록 내의 if 문으로 옮기는 것이 좋습니다. – LINEMAN78

1
package org.life.java.so.questions; 

import java.text.ParseException; 
import javax.swing.JOptionPane; 

/** 
* 
* @author Jigar 
*/ 
public class InputDialog { 

    public static void main(String[] args) throws ParseException { 
     String input = JOptionPane.showInputDialog("Enter Input:"); 
     if(input == null){ 
      System.out.println("Calcel presed"); 
     }else{ 
      System.out.println("OK presed"); 
     } 


    } 
} 
+0

완전한 코드 예제를보고 싶습니다. 너는 특히 좋다. 하지만 "시민의 요청"을 할 수 있을까요? 여분의 회선을 제거하십시오. 맨 위의 4는 IDE 외부에서 무의미합니다. 두 번째 주석의 두 번째 줄은 아무 것도 추가하지 않습니다. 주 끝의 빈 줄 2 개는 값을 추가하지 않습니다. 이러한 라인을 제거하면 E.G. 26 개에서 19 개 라인으로 - 약 25 %의 수직 절약. 이는 대형 모니터를 사용하는 사람들에게는 적절하지 않을 수 있지만 더 작은 해상도의 구형 모니터를 사용하는 경우 전체 화면을 한 화면에서보기가 더 쉽습니다. 그것을 고려해 주셔서 감사합니다. –

+0

@Andrew Thompson 간주 : –

관련 문제