2012-11-04 5 views
0

제 프로젝트의 경우 숫자가없는 성과 이름을 입력해야하지만 온라인으로는 찾을 수 없습니다. 너가 도울 수 있으면, 그것은 대단 할 것이다.숫자가 아닌 문자 만 입력하는 데 문제가 있습니다

시간이 있다면 사용자가 입력 한 이름과 성을 쉼표로 바꾸어야합니다.

import java.io.BufferedReader; 
    import java.io.InputStreamReader; 
    import java.io.IOException; 

    public class PhoneListr { 

public static void main (String[] args) throws IOException { 
    String firstName; 
    String lastName; 
    System.out.println ("Please enter your first name:"); 
    firstName = PhoneList (""); 
    System.out.println ("Please enter your last name:"); 
    lastName = PhoneList (""); 
    System.out.println ("Your full name is: " + lastName + "," + firstName); 
} 

public static String PhoneList (String input) throws IOException { 
    boolean continueInput = false; 

    while (continueInput == false) { 

      BufferedReader bufferedReader = new BufferedReader (new InputStreamReader (System.in)); 
      input = bufferedReader.readLine(); 
      continueInput = true; 

      if(input.matches("[a-zA-Z]+")) { 
       continueInput = true; 
        } 
        else { 
       System.out.println ("Error, you may only use the alphabet"); 
       continueInput = false; 
     } 
    } 
    return input; 
} 

}

+0

위의 코드에 예외가 없습니까? : -O –

+0

성과 이름을 쉼표로 뒤집으시겠습니까? 무슨 뜻인지 알지 못해? # 자세하게 설명 하시겠습니까? –

+0

사용자가 이름과 성을 입력 할 때 이름과 성을 다시 인쇄해야하지만 성을 먼저 쉼표로 표시 한 다음 이름을 먼저 인쇄해야합니다. – user1718272

답변

4

사용 String.matches(regex) :

if(input.matches("[a-zA-Z]+")) { 
    System.out.println("your input contains no numerics"); 
     } 
     else { 
    System.out.println("only alphabets allowed"); 
} 

상기 정규식은 Z가 포괄적 (범위)를 통해 Z 또는 통해 확인한다.

당신은 메서드에 인수를 전달하여 검사를 추가 할 수 있습니다
-1

StringUtils.isNumeric

입력 한 문자열

+1

'isNumeric'는 문자열에 숫자 만 있으면 true를 반환하고, 입력이 알파, 숫자 및 spl의 조합 인 경우에는 어떨까요? 챠리스. 나는 isAlpha를 사용하는 것이 더 나은 선택이라고 생각한다. 하지만 이것 대신 API를 가져 오는 것이 아니라 무겁습니다. Chaitanya가 대답 할 때 RegEx를 사용할 수 있습니다. –

1

숫자 인 경우에 당신이 정규 표현식, 또는 "정규식"을 사용할 필요가 일치하는 문자열의 이러한 유형의 true를 돌려줍니다 es. 그것은 커버해야 할 매우 큰 주제이지만 here's an introduction입니다. RegExes는 문자열이 특정 기준과 일치하는지 여부를 테스트하거나 해당 문자열에서 특정 패턴을 가져 오거나 해당 패턴과 일치하는 특정 부분을 다른 것으로 대체하는 데 사용되는 도구입니다.

OP 문제와 설명을 바탕으로
if(input.matches("\\d")) { 
// matched a digit, do something 
} 
+0

링크 및 +1에 대한 +1'// 일치하는 것, 무엇인가';-) –

1

여기에 몇 가지 제안은 다음과 같습니다

여기에 귀하의 의견은 숫자가 포함되어 있는지 여부를 테스트하기 위해 정규식을 사용하는 예입니다.

Chaitanya 솔루션은 알파벳에 대해서만 체크를 처리합니다. 내가 String

반환받는 방법 phoneList()main()

String firstName; 
String lastName; 

변경 retun 유형 내부에 두 개의 변수 firstNamelastName를 만들기 위해 당신을 조언 할

: 문제의 소외 지역에 대해

방법 phoneList 안에 input 인디 드 number을 입력하십시오. 당신이 수를 반환)하고 "쉼표 형식"에 인쇄하는 지금 firstNamelastName

System.out.println ("Please enter your first name:"); 
firstName = PhoneList (0); 
System.out.println ("Please input your last name:"); 
lastNamr =PhoneList (0); 

내부에 보관되는 Y 내가 프로그램을 다시 읽으면서

System.out.println("full name is: " +lastName+ "," +firstName); 

를 사용, 그 엉망! ! 방법/진정한 flase 및 이용하지 execptions에 continueInput를 설정하는 phoneList()

  1. 사용 정규식 조건에 대해

    .

p.s. 동료 회원이 위의 실수를 발견하면 모바일을 사용하여 서식을 지정하는 등의 문제에 대해 확신하지 않고 게시 할 수있는 "편집"에 감사드립니다. 감사합니다. :-) (Y 것은)

+0

내 친구, 진정한 구세주 야. 완벽하게 일했습니다. – user1718272

+0

@ user1718272 : u r wc. 그게 전부 야. –

0

또한

if(input.matches("[^0-9]")) 
{ 
System.out.println("Don't input numbers!"); 
continueInput = false;} 

이 두번째 질문은 물어 무엇인지 이해할 수 없다 사용할 수 있습니다. 당신의 2 번째 질문에서 얻은 대답은 이것과 같습니다. 주요 기능에서 처럼 코드를 변경 마지막 줄이

return input; 

로 변경해야 다음 기능 PhoneList에

String first_name = null; 
String last_name = null; 
System.out.println ("Please enter your first name:"); 
first_name = PhoneList(); 
System.out.println ("Please input your last name:"); 
second_name = PhoneList(); 
System.out.println (second_name+","+first_name); 

a link 확인하시기 바랍니다이! 더 많은 정보를 원하시면

관련 문제