2017-01-07 5 views
1

거짓말하지 않는 것은 내가 대학에서 일하고있는 프로젝트를위한 것입니다. 이제는 특정 섹션에서 11 자 길이 여야하는 등록 번호와 관련된 세부 정보를 사용자가 입력해야합니다. 색인의 문자 (8)과 (10)은 문자이어야하며 나머지는 숫자 여야합니다. 사용자가 잘못된 문자를 입력 한 경우 올바른 문자가 입력 될 때까지 다시 입력해야합니다. 나는 내가 볼 수없는 엄청나게 쉬운 일이되어야한다고 생각하는 것에 너무 많은 어려움을 겪고있다. 여기에 지금까지 주변에 장난 삼아 한 일이다 (당신을 마음이 코드는 형편이며, 우리가 내 물론이보다 더 배운대로 아주 기본적인 자바 함수를 사용)문자열 인덱스의 문자를 두 개 이상 확인하고 유효성을 검사하는 방법은 무엇입니까?

String regiNum; 
    boolean validRegi = true; 

    System.out.print("Enter registration num: "); 
    regiNum = keyboard.nextLine(); 

    char firstChar = regiNum.charAt(8), secChar = regiNum.charAt(10); 
    while(validRegi == true){ 
     if(!(firstChar >= 'A' && firstChar <= 'z' && secChar >= 'A' && secChar <= 'z')){ 
      System.out.print("Enter registration num again: "); 
      regiNum = keyboard.nextLine(); 
      validRegi = false; 
     } 
    } 

난 못 했어 다른 문자가 유효한지 여부를 확인하기 위해 다른 문자의 유효성 검사를 확인하는 것입니다. 무엇이 가장 적합할까요? 어쩌면 do while 회 돌이? 엄청나게 어리석은 질문에 사과드립니다.

+1

하지 가장 우아한 용액하지만'string.matches ("\\ \\ D D D \\ \\ \\ D D D \\ \\ D [A-ZA-Z] \\ P – Moira

+0

정규 표현식이이 질문에 도움이되는 해결책이라고 생각하지 않습니다. Daniel은 기본 Java를 수행 중이며 While 루프로 태그를 지정했다고 말했습니다. . 그의 프로젝트가 기대하는 바 일 것 같다. – DaveyDaveDave

답변

0

이 방법으로 원하는 작업을 수행 할 수 있습니다. 아마

boolean isValid(String reg) { 
    //check if length is 11, return false if not 
    if(reg.length <11){ 
     for(int i=0;i<11;i++) { 
      if(i==8 || i==10) { 
       if(!Character.isLetter(reg.charAt(i))){ 
        return false; 
       } 
      }else{ 
       //check if its a number, return false if not 
       if(!Character.isDegit(reg.charAt(i))){ 
        return false; 
       } 
      } 
     } 
    } 

    return true; 
} 
+0

올바른 문자가 주어질 때까지 어떻게하면이 루프를 만들 수 있습니까? 잠시만 요? –

+0

예! do-while. 이 메소드를 작성하면 호출 할 때 do-while 또는 click을 통해 수행 할 수 있습니다. 단추! 주의! 대답을위한 당신의 upvote는 높게 평가 될 것입니다. :) –

2

가장 간단한 방법은 for 루프를 사용하고 문자가 하나씩 유효한지 확인하는 것입니다. 다음과 같이 시도 할 수 있습니다.

boolean isValid(String regiNum) { 
    //check if length is 11, return false if not 
    for(int i=0;i<11;i++) { 
     if(i==8 || i==10) { 
     //check if its letter, return false if not 
     }else{ 
     //check if its a number, return false if not 
     } 
    } 
    return true; 
}