2015-01-16 3 views
0

정수 문자열 인 string이라는 문자열이 있습니다.문자열의 정수를 계산하십시오.

String line = 1 2 3 4 5 65 70 

줄을 위해 lin라는 스캐너를 만들었습니다.

Scanner lin = new Scanner(line); 

이제 정수의 개수를 계산하고 싶습니다.

나는
while (lin.hasNextInt()){ 
    size++; 
} 

을 시도했지만 작동하지 않습니다. Java는 컴파일하는 동안 오류를주지 않지만 무한 루프에서 실행되는 것처럼 보입니다. 도움? 다른 뭔가가 될 수 있을까요?

답변

1

hasNextInt()으로 전화하면 소비할만한 것이 있지만 실제로 소비하지 않는 것만 묻는 것입니다.

while(lin.hasNextInt()) { 
    lin.nextInt(); // Consumes the int 
    size++; 
} 

이 사항 String.split()를 사용하여 문자열 입력을 구문 분석 (이 문제를 해결하는 다른 방법이있다, 그런 말로 미루어 보아, 그리고 당신이해야하는 경우 본 후에 Integer은 다음과 같습니다

이 시도 좋은 방법).

String line = "1 2 3 4 5 65 70" 
String parts[] = line.split("\\s"); 
int size = 0; 
for(String part : parts) { 
    try { 
     Integer.parseInt(part); 
     size++; 
    } catch(NumberFormatException e) { 
     // What we parsed was NOT a number, catch the exception and move on. 
    } 
} 
System.out.println("Found " + size + " numbers."); 

그런 식으로 입력 내용에 "1 a 2"가 포함되어 있으면 해당 입력란에 "a"가 표시됩니다. 물론 입력이 모든 숫자와 공백으로 보장된다면, 길이는 parts 일 수는 있지만 보장 된 입력 형식을 신뢰하지는 않습니다.

+0

괜찮 았습니다. 그것은 지금 나에게 많은 톤을주고있다. 그러나 다른 물건에서 나는 생각한다. 그러나 감사한다! !! 당신은 그 부분을 고쳤다 – SakuraKaminari

+0

멋지다, 기쁜 도움. 문제를 수정 한 후에 다른 오류를 게시하십시오. 도움이 필요하면 해결할 수 있습니다. – Todd

+0

NoSuchElementException이 무엇인지 알 수 있으며이 문제와 관련이 있습니까? – SakuraKaminari

0
String line ="1 2 3"; 
String array[] = line.split(" "); 
value = array.length; 

value = line.split(" ").length; // in one line 

다른 방법입니다. (하지만 정수인지 확인하지는 않습니다.)

관련 문제