2016-12-21 1 views
0

for 루프를 사용하여 제공된 입력에 숫자가 있는지 확인하려고합니다. 나는 오랫동안 그것을 해보려고 노력 해왔고 심지어 Google의 두 번째 페이지를 검색했습니다. 나는 도움을 청하기로 결심했다. 여기에 지금까지 시도한 작업은 다음과 같습니다 For 루프를 사용하여 문자열에서 번호 식별

for (c = 0 ; c < 6 ; c = c++) 
{ 
    c = input.charAt (0); 

    if (Character.isDigit (c)) 
    { 
     System.out.println ("Input must only contain letters."); 
     return; 
    } 

} 

은 기본적으로 내가 편지를 스캔하기 위해 노력하고있어, 그들은 문자 또는 내가 함께하는 데 문제가 무엇 숫자, 경우 개별적으로 테스트 첫 번째 문자 만 스캔되기 때문입니다. 나는 루프에서 "C++"을 타이핑 해 보았습니다. 모든 편지를 어떻게 스캔합니까?

편집 : 오, 그건 실수 였어. 나는 그것을 c = c + 1로 바꾸었지만 작동하지 않았다. 다시 C++로 바꿨지 만 c = C++로 끝났다.

+1

Character.isDigit() 함수를 사용하여 정규 표현식을 검색하거나 각 문자를 반복하여 찾고 있는지 여부를 확인해야합니다. 아래의 질문을보십시오 : http : // stackoverflow.com/questions/18590901/check-if-a-string-containing-numbers-java – Abdulgood89

+0

"str.matches (". * \\ d +. * ");"는 어떻게 사용합니까? 코딩에 조금 익숙하지 않은데 아직 정확히 알지 못했습니다. –

+0

String myString = "여기에 문자열 삽입 123"; System.out.println (myString.matches (". * \\ d +. *"))); 문자열이 해당 정규식과 일치하면 true를 반환합니다. 정규식은 문자열에 숫자가 있는지 확인합니다. – Abdulgood89

답변

0

c을 색인과 값으로 동시에 사용할 수 없습니다. 이것을보십시오 :

for (int i = 0; i < 6; i++) { 
    c = input.charAt(i); 
    // ... 
} 
+0

아, 알겠습니다. 그건 의미가 있습니다. –

3

이 줄에는 : c = input.charAt(0);에는 2 가지 문제가 있습니다.

먼저 루프가 실행될 때마다 반복 값 을 재설정하지 않으려 고합니다. 그래서 어쩌면과 같이 다른 변수에 그 변경 : 당신이 .charAt() 기능에 0을 전송하기 때문에

char chr = input.charAt(.... 

둘째, 첫 번째 char을 잡고있다. 이 시도 :

char chr = input.charAt(c); 
if (Character.isDigit (chr)) 
{ 
    System.out.println ("Input must only contain letters."); 
    return; 
} 
+1

감사합니다. 지금은 이해합니다. 나는 많은 재료를 다른 위치에 놓고 실험하는 많은 시도를했다. 나는 내 코드를 다시 건네 주겠다. 다시 감사한다. –

2

정규 표현식과 자바의 패턴 클래스 사용 (정규 표현식에 익숙하지 않은 경우

boolean b = Pattern.matches("[0-9]+", input); 

, [0-9] + 하나 개 이상의 항목을 찾을 수있을 것이다 ' + '연산자)를 0에서 9 사이의 임의의 숫자로 구성 할 수 있습니다. 그런 다음 변수 b가 true인지 (검색에서 숫자를 찾음을 나타냄) 또는 false (문자열에 숫자가 없음)인지 확인해야합니다.

c = c++ 

이 작업은 실제로 C의 값에 영향을주지 않습니다 :

또한, 나는 당신이 다음과 같은 방식으로 루프 변수 C를 증가하고 나타났습니다. 할당 문에서 변수 뒤에 오는 ++ 연산자는 "다음에 변수 값을만큼 증가 시키면 다른 변수에 현재 값을 할당합니다. 그 다음에 c 값을 할당하고 c를 증가 시키며 .. 다음과 같이 하나이 증가 값이 너무 루프 아마 무한히 계속, 다시 C에 저장되지 않습니다 루프 변수를 증가하는 적절한 방법은 다음과 같습니다이 도움이된다면 나는이 부울 기능 검사를 만들었습니다

for (c = 0; c < 6; c++) { 
    // ... 
} 
0

.

public static boolean containtsDigits(String input) { 
     boolean isDigit = false; 
     if(input != null && !input.isEmpty()){ 
      char[] letterCharArray = input.toCharArray(); 
      for(int i = 0 ; i < letterCharArray.length ; i++){ 
       if(Character.isDigit(letterCharArray[i])){ 
        isDigit = true; 
        break; 
       } 
      } 
     } 

     return isDigit; 
    } 
0

시험해보기 :

public void check(String word){ 

    int n=word.length(); // To Find length of the string. 
    for(int c=0;c<n;c++){ 
     char ch=word.charAt(c); // for extracting every single element of word 

     if(Character.isDigit(ch)) // To check if its Digit 
     { 
      System.out.println ("Input must only contain letters."); 
      break; 
     } 
    } 

    System.out.println ("All Good"); 
} 
+0

그냥 "시험해보십시오"라고 말하면서 원래의 코드에서 보았던 문제를 영어로 설명 할 수 있습니까? 귀하의 코드 예제는 훌륭하고 주석이 큽니다.하지만이 대답은 누군가가 해석하기가 어려울 수 있습니다 (특히 원래 코드와 다른 점이 있기 때문에). – Guildencrantz

+0

내 실수를 지적 해 주신 Guildencrantz에게 감사드립니다. 다음 번에 처리하겠습니다. –

관련 문제