2017-12-16 3 views
-2

성과 이름을 확인하려고하는데 사용자가 숫자를 입력 할 수 없도록하려는 경우 try catch를 사용하여이를 수행 할 수있는 방법이 있습니까?숫자가없는 문자열에 대한 캐치 시도

try{ 
     studentArray[0][studentNumber] = firstField.getText()+" "+lastField.getText(); 
    }catch(Exception e){ 
     validInput.setText("Please enter valid names"); 
    } 
+1

@JoeC 복제본이 그 반대가 아닌가? 허용 된 응답 _에서 문자열이 유효한 정수인지 확인하십시오. – pirho

+0

사실 그건 사실입니다. (그것은 내 깃발이었고, 죄송합니다)하지만 사용자가 대답에서 솔루션을 파생시킬 수 있기를 바랍니다. –

+0

@RichChurcher 좋아요. ** 실제 ** 속임수를 쓰고 나서 화가났습니다. :) 글쎄, 속임수. – pirho

답변

2

try catch는 throwable을 의미합니다.

try{ 
     someMethod(myString); 
    }catch(Exception e){ 
     validInput.setText("Please enter valid names"); 
    } 

및 방법 자체 :

void someMethod(String string) throws Exception{ 
//logic 
} 

하지만, 돈 '난 당신이 그렇게 할 수 있다는 것을 의미하지만 당신은 시도에서 호출하는 방법을 만들 수 있고, 그 일부과 같이 예외를 발생 Exception을 사용하면 YourOwnException을 더 잘 정의하고 던질 수 있습니다.

0

확인이 -이 입력에 어떤 숫자가 존재 얻을 수 있는지 확인하는 간단한 방법 :

studentArray[0][studentNumber] = firstField.getText() + " " + lastField.getText(); 
Pattern p = Pattern.compile("([0-9])"); 
Matcher m = p.matcher(studentArray[0][studentNumber]); 

if(m.find()){ 
    System.out.println("Please enter valid names"); 
} 

가 자신에 정의 된 예외를 던질 때 잘못된를 던질 가능성이있다 입력이 발생하지만 try-catch 블록에서이 입력을 테스트하려는 경우 사용자에게 입력을 요청하는 코드를이 예외를 throw하는 메서드에서 제공해야합니다.

아마도 예외를 던지는 것보다 문제를 해결하는 또 다른 방법이있을 수 있습니다.이 방법은 실제로 심각한 문제가 발생했음을 나타냅니다. 위의 코드로 잘못된 입력이 감지되었을 때 사용자에게 다음 입력 기회를 제공하는 것이 더 나은 해결책이 아니라면 제안 할 것입니다. do-while 루프를 작성하면 여러 입력을 얻을 수 있고, 루프를 종료 할 수있는 조건으로 올바른 입력이 발생할 때 변경되는 부울 플래그를 사용할 수 있습니다. 예외를 던지기보다는 프로그램의 정상적인 진행을 계속할 수 있습니다.

0
for(Char x : yourstring.toCharArray()){ 
    if(!Char.isDigit(x))// it have some letter 
} 
+3

간결함은 받아 들일 만하지만 더 충분한 설명이 좋습니다. –