2011-11-02 4 views
0

텍스트 파일에서 입력을 읽고 토큰 및 레이블을 인쇄하는 코드를 작성 중입니다. 그러나 문제가 생겼습니다.다음 특수 문자 확인

abcde=123; 

가 어떻게 미리보고 다음 있는지 확인하기 위해 프로그램을 말할까요 : 코드는 문자로 읽는 경우, 이상적으로는, 예를 들어 다른 문자 또는 특수 문자, 있는지 확인하기 위해 다음 문자를 확인해야합니다 문자는 또 다른 문자, 같음, 숫자 등입니다. '다음 문자가 문자가 아닌 경우 print "= TEXT \ n", else else'라는 if 문 안에는 어떤 방법이 있습니까?

이 질문이 혼란 스럽다면, 저는 매우 유감입니다. (여기 1시입니다.) 나는 더 많은 정보를 제공 할 것입니다. 고맙습니다.

답변

0

다음 문자가 숫자가 아닌지 확인할 수 있습니다. Character API를 확인하십시오. 메서드 isDigit()가 있습니다. 기본적으로 다음 문자가 숫자가 아니면 특수 문자, 공백 또는 문자입니다.

희망이 조금 도움이 되었어요!

0

간단히 말해 Character.isLetter(character) 메서드를 사용합니다. 이 메서드는 인수가 문자 인 경우 true을 반환하고 그렇지 않으면 false을 반환합니다.

link to documentation on Character

+0

ASCII 만 사용한다면 if 체크 만하면됩니다 (97-122 범위의 비 문자를 찾는데 다소 놀랄 것입니다). 그런데 왜 그런 것을 가정하고 싶습니까? 캐릭터 메소드는 이러한 것들을 위해 훨씬 더 좋습니다. – Voo

+0

Voo, 문자 검사를 위해'Character.isLetter()'메소드를 사용했습니다. 이 코드의 전체는 OP가 제공 한'Character.isLetter()'체크를 제외하고 말입니다. – cspray

+0

Voo, OP 편집 된 질문을 발견 했으므로 OP 코드를 보지 못한 사람들에게 혼동을 줄 수 있으므로 코드 예제를 제거하기 위해 내 대답을 편집했습니다. – cspray

0

첫째, 귀하의 질문에 대답,하지만 내가 생각하는 당신이 무슨 일을하는지 달성하기 위해 더 나은 방법을 제공합니다.

그 다음 반복에 다시 문자를 읽을 수 있습니다, 그래서 당신은, 당신은 당신이 지점을 표시 할 수있는 BufferedReader로 당신의 리더를 감싸 다음 문자를 얻고 이전 문자로 다시 이동 재설정 한 경우 :

BufferedReader br = new BufferedReader(reader); 
br.mark(1); 
int firstByte = br.read(); 
br.reset(); 

이 작업을 수행하고 앞으로의 수행을 피하는 다른 방법은 각 문자를 StringBuilder에 추가하는 것입니다. 그런 다음 숫자가 아닌 숫자를 누르기 때문에 전체 숫자가 필요하면 StringBuilder에서 전체 숫자를가집니다. 동일한 StringBuilder를 다시 사용하고 필요한 경우 지우는 것이 효율적이어야합니다.

0

다른 답변 외에 Java에도 PushbackInputStream 클래스가 있습니다. 때로는 이것이 선견지두 유형 문제를 해결하는 데 필요한 것입니다.