2011-09-06 5 views
-1

내게 아플 수 있습니다. 이걸로 나를 도울 수 있습니까? 내 문제는 내 Java 프로그램과 그것의 인덱스에 공백을 식별하는 것입니다하지만 색인 (JAVA)를 식별하는 방법을 모르겠다. 내 코드 heres :색인 식별 (자바)

import java.util.*; 

public class CountSpaces 
{ 
public static void main (String[] args) 
    { 
    System.out.print ("Enter a sentence or phrase: "); 
    Scanner input=new Scanner(System.in); 
    String str=input.nextLine(); 
    int count = 0; 
    int limit = str.length(); 
    for(int i = 0; i < limit; ++i) 
    { 
    if(Character.isWhitespace(str.charAt(i))) 
    { 
     ++count; 
    } 
    } 

감사합니다.

+2

'i'는 색인입니다. –

답변

2
if(Character.isWhitespace(str.charAt(i))) 

이미 대부분의 작업을 수행하고 있습니다. 위의 조건이 참일 경우 색인 i에 공백 문자가 있습니다. 어떻게하면 모든 색인을 추적해야하는지 색인 iif의 배열에 복사하십시오.

4

ArrayList을 사용하여 색인을 기록하십시오. 또한 목록의 항목 수가 발생 횟수이므로 카운트가 필요하지 않습니다.

ArrayList<Integer> whitespaceLocations = new ArrayList<Integer>(); 
for(int i = 0; i < limit; ++i) 
{ 
    if(Character.isWhitespace(str.charAt(i))) 
    { 
     whitespaceLocations.add(i); 
    } 
} 

System.out.println("Whitespace count: " + whitespaceLocations.size()); 
System.out.print("Whitespace is located at indices: "); 
for (Integer i : whitespaceLocations) 
{ 
    System.out.print(i + " "); 
} 

System.out.println(); 
+0

왜 System.out.print (i.toString() + "");'? '에서'i.toString()'을 사용하고 있습니까? 이것은'System.out.print (i + "");'작동합니다. ** OR ** 단순하고 대부분 내 의견으로는 System.out.print (i);에 사용됩니다. 또한 * 끝에'System.out.println();'이 필요 없습니다. –

+0

전자가 필요 없다는 점에서 당신이 맞지만 ... 어쨌든 일어날 것입니다 :: 어깨를 으깨는. 후자는 가독성을위한 것입니다. 여러분의 버전은'공백이 인덱스 : 251022'에있는 것과 비슷한 것을 캐리지 리턴없이 출력합니다. 반면 위의 코드는'공백이 인덱스에 있습니다 : 2 5 10 22'라고 출력합니다. –

+0

오! 예. 당신이 println이 아니라'print'를 사용하고 있다는 것을 눈치 채지 못했습니다. 하지만 여전히 toString()을 제거해야한다고 생각합니다. 그것은 불필요합니다. ;-) –