2014-12-28 2 views
0

사용자가 아무 것도 입력하지 않은 경우 코드를 catch하고 싶습니다. 당신이 볼 수 있듯이 문자열을 정수로 변환하기 때문에 ab.equals (null), ab.isEmpty()를 사용할 수 없습니다. 문자열 전에 parseInt를 호출하는 비어있는 경우자바에서 빈 변수 int input을 catch하십시오.

double x = -1; 
try { 
    x = Integer.parseInt(ab); 
} 
catch (NumberFormatException exc) { 
    x = -1; 
} 

당신은 확인할 수 : 그건 당신이 빈 문자열에 parseInt를 호출하는 경우 던져 질 것이다 예외가 이후

import javax.swing.JOptionPane; 
public class Mango { 


    public static void main (String[] args){ 

     String ab = JOptionPane.showInputDialog("Enter Anything"); 
     double sum = 0; 
     double x = Integer.parseInt(ab); 

     if(x <= 0){ 

      System.out.println("Empty!"); 

     }else{ 

      sum+=x; 

     } 
    } 

답변

3

당신이 그것을 변환 시도하기 전에 반환 값 ...

String ab = JOptionPane.showInputDialog("Enter Anything"); 
if (ab != null && !ab.trim().isEmpty()) { 
    // Try and convert the value... 
} else { 
    // Bad input 
} 

예를 확인

double sum = 0; 
String ab = JOptionPane.showInputDialog("Enter Anything"); 
if (ab != null && !ab.trim().isEmpty()) { 
    double x = Integer.parseInt(ab); 
    sum += x; 
} else { 
    System.out.println("\"" + ab + "\" is not a valid input value"); 
} 
+0

try catch도 사용해야 할 수도 있습니다. – SMA

+0

@almasshaikh 그렇습니다. 'NumberFormatException'은 RuntimeException이며, 논리 흐름을 제어하기 위해'try-catch' 블록을 사용하지 않아야합니다. 당신이 그것을 절대해서는 안된다는 말은 아니고 단지 그것을 사용하기위한 justificaiton을 제공 할 필요가 있습니다 ... – MadProgrammer

+0

OP가 커버하고자하는 최후의 경우입니다. 따라서 나는 똑같은 질문을했습니다 : – SMA

2

당신은, NumberFormatException을 잡을해야 그러나 사용자가 숫자가 아닌 문자 또는 너무 큰 숫자를 입력하면 여전히이 예외가 발생할 수 있습니다.

+1

이 개인 니트의 선택이다, 그래서 대답은 "잘못 생각하지 않는다 ",하지만 일반적으로 로직 브랜칭을 위해'try-catch'를 사용하는 것은 피해야합니다. – MadProgrammer

+1

@MadProgrammer 예외를 완전히 포착하지 않으려면 parseInt에 이미 포함 된 로직 중 일부를 구현해야합니다. Strin g는 자릿수이며, 그 수는 int에 들어가기에는 너무 크지 않거나 너무 작지 않습니다. – Eran

+0

사실입니다. 'NumberFormatException'이'RuntimeException' 인 것을 고려하면, 그것을 또한 더 위험하게 만듭니다. 경험상 일반적으로 'try-catch' 블록을 사용하여 프로그램 로직을 제어하는 ​​것은 바람직하지 않습니다. 절대 절대로하지 말라는 말은하지 않습니다. 예를 들어, 정규 표현식을 똑같이 사용할 수 있습니다. 예를 들어'String'의 유효성을 빠르게 검사 할 수 있습니다 – MadProgrammer