2014-07-09 3 views
0

지금까지 길이를 얻는 데 아무런 문제가 없지만 글자의 숫자를 인식하는 것은 어렵습니다. 도움이 필요하시면 도움을 받으십시오. 새 코드가 도움이되었습니다. 문자열의 요소를 세는 것은 주소 예제와 같이 입력 된 숫자를 계산하지 않습니다. San Pedro St Philippines ..... 산 페드로 세인트 필리핀 만 계산합니다 .........입력 된 문자열에서 숫자와 문자를 인식했습니다.

import java.util.Scanner; 

public class Exercise3 
{ 
    public static void main(String [] args) 
    { 
     Scanner scan= new Scanner(System.in); 
     System.out.println("Enter String:"); 
     String s=scan.nextLine(); 
     s = s.replace(" ",""); 
     System.out.println("Total of Elements is: " + s.length()); 

     int nDigits =0,nLetters =0,sum =0; 
     for(int i =0;i<s.length();i++) 
     { 
     Character ch = s.charAt(i); 
     if(Character.isDigit(ch)){ 
     nDigits++; 
     sum += Integer.parseInt(ch.toString()); 
    } 
     else if (Character.isLetter(ch)){ 
     nLetters++; 
    } 
    } 
     System.out.println("The sum of numbers in the string: " + sum); 
     } 
     } 
    } 
+0

_if 문자가 숫자 인 경우 전체 문자열을 숫자 합계로 _ _... 생각하면됩니다. – Ben

+0

팁을 주셔서 감사합니다. Ben – user3820685

답변

0

문제가있는 것 같습니다. sum += Integer.parseInt(s.toString());. 전체 InputStream의 문자열 값을 가져오고 있습니다. 이것은 거의 확실하게 원하지 않는 것입니다. sum += Integer.parseInt(s.charAt(i).toString());을 의도 하셨다고 가정합니다. 그러면 개별 숫자의 값만 얻을 수 있습니다. 문자열 hello43world에 마음에 가지고, 그것은 7 (4 + 3)이 아닌 43

편집을 반환 : 당신이 실제로 원하는 일을하기 위해 - 문자열의 문자 수 인 시도

public static int getSum(String s) 
{ 
    int sum = 0; 
    for(int i = 0; i < s.length(); i++) 
    { 
     if(Character.isLetter(s.charAt(i))) 
     { 
      sum ++; 
     } 
    } 
    return sum; 
} 

문자열의 문자 만 계산합니다. 문자가 아닌 모든 문자를 계산하지 않는 것보다 훨씬 쉽습니다.

+0

지식 Kevin에게 감사드립니다. 특정 프로그램 입력 한 문자열의 길이를 어떻게 계산합니까? hello43world와 같은 예제는 길이가 10 일 때만 숫자 – user3820685

+0

을 계산하지 않으므로's.length()'에 의해 문자열의 길이를 얻을 수 있습니다. 이것은 문자가 아닌 문자의 수를 계산합니다. –

+0

Err ... 나는'getSum'이 반환하기를 바라는 것과 정확히 혼동하고 있다고 생각합니다. 정확히 입력 문자열을 기반으로 반환 할 항목을 원하십니까? –

관련 문제