2014-11-12 2 views
0

우편 바코드 변환기를 만들기 위해이 지정을 받았습니다. 나는 예외가 하나있는 작업 프로그램이 있습니다. 내가하려고하는 오류 검사는 바코드를 숫자 변환으로 제한하는 것입니다. 문자 (프로그램에서 다시 숫자로 변환해야하므로). 가능한 모든 문자를 불특정 한 순서로 그 두 문자로 제한 할 수있는 방법을 정확하게 파악할 수 없습니다. 나는 노력했다 (! input.hasNext ([:] [|])); 그리고 그것은 내가 생각한 어떤 변화와도 운이 없다. 어떤 도움이라도 대단히 감사하겠습니다.오류 확인 완료를위한 도움이 필요합니다

Scanner input = new Scanner(System.in); 
System.out.println("Enter a barcode with using : or | "); 
String barcode = input.next(); // The barcode should not have white space, so don't use nextLine() 
while (!barcode.contains("|") && !barcode.contains(":")) 
{ 
    System.out.println("Error: Please Input a correct number"); 
    System.out.print("Entry: "); 
    input.next(); 
} 
// Do whatever with the barcode 

는 기본적으로, 당신이 바코드를 입력 한 번 사용자에게 메시지를 표시하려면 :

public static String number() 
{ 
    System.out.println("Enter a barcode with using : or | "); 
    Scanner input = new Scanner(System.in); 
    while (!input.hasNext()) 
    { 
     System.out.println("Error: Please Input a correct number"); 
     System.out.print("Entry: "); 
     input.next(); 
    } 
    String input1 = input.next(); 
    return input1; 
} 
+3

"좋은"사례와 "오류"사례를 보여주는 예제 입력보기 – hfontanez

+0

설명을 위해 "잘못된"문자가 감지 된 후 프로그램이 모든 것을 무시하고 최대 수신 한 정보 가져 오기를 원하십니까? 그 점 (내 문자열은':: | :: Q :: ||'을 의미하고 프로그램은':: | :: ||'을주는'Q'에서 멈춘다. 또는 허용되지 않는 문자가 감지 되더라도 관계없이 오류가 발생하기를 원하십니까? –

+0

'while (! input.hasNext())'... 운좋게도 System.in을 소스로 사용하기 때문에 예외가 발생하지 않습니다. – Tom

답변

0

난 당신이 찾고있는 정규 표현식이 [|:]* 믿습니다. 즉, "| 또는 :"중 하나의 문자를 의미합니다. 공백이 아닌 다른 입력의 모든 문자가있는 경우

, 즉 바 또는 콜론 아니라,이 거부됩니다. 공백이나 개행 문자는 토큰의 끝으로 간주됩니다. 정확히 5 문자 입력을 제한하려면

, 당신은 [|:]{5}을 사용해야합니다. 당신이 적어도 5 자,하지만 10 개 이상을 원하는 경우에, 식은 [|:]{5,10}, 당신은 적어도 5 개 문자를 원하는 경우,하지만 당신은, 당신이 [|:]{5,}을 얼마나 더보다 사용해야 상관하지 않습니다.

+0

고마워, 이건 내가 찾고있는 코드 생성에 제한이있는 것 같다. 그러나 사용자가 몇 개의 바코드를 입력하면 충돌하지 않도록 바코드의 길이를 두 번 확인하기 위해 다른 중첩 된 while 루프가 있습니다. 과제는 5 요코하마에서 @ –

+0

이 필요합니다. 나는 길이 검사를 위해 수용 할 대답을 편집했다. – RealSkeptic

+0

굉장! 나는 그것을 완벽하게 기능화했다. 정말 고마워! 내가 그 프로그램에 함께 할 곳을 아는 가벼운 음식이 없다면. 다시 한 번 감사드립니다! 나는 투표를 할 것이지만, 나는 15 가지 평판이 필요하다고 말한다. –

0

은 아마 싶은 것은이 같은 것입니다. 입력에 '|'가 포함되어 있는지 확인하려면 입력을 검증해야합니다. 또는 ':'. 입력에. 자 중 하나가 들어 있지 않으면 계속 입력하여 사용자에게 올 Y 른 입력을 원합니다. 유효한 입력을 입력하면 코드는 while() 루프에서 벗어나 정상적인 실행을 계속합니다.

+0

나는 이걸 시도했는데 내가 무엇을 입력했는지에 상관없이 반복문에 갇혀있는 것처럼 보였다. 편지 번호와 ": |"의 조합에 상관없이 루프를 계속했습니다. 조합 내가 거기에 넣어 –

관련 문제