2013-05-09 3 views
1

데이터를 읽고 배열로 정렬하려는 데이터 세트가 있지만 유일한 문제는 모든 데이터가 공백으로 구분된다는 것입니다.공백으로 구분 된 데이터를 읽고 정렬하는 방법은 무엇입니까?

데이터를 큰 다차원 배열로 정렬하려면 루프를 사용하고 싶었지만 공백으로 구분되어 있기 때문에 완전히 손실되었습니다.

데이터는 1 년 단위로 정렬되고 그 다음에는 6 공백, 그 다음 달에 3 단위, 그 다음 해당 월에 31 개의 데이터 세트가 정렬되며 그 각각에 3 개의 공백이옵니다. 내 표현이 여기에 아주 좋은하지 않은 경우

while(year) 
    //sort into annual array 
     while(month) 
      //sort into monthly array 
       for(each individual data entry) 
        //sort each data entry into each month's array 

죄송합니다 그래서 같이 :

1974  1 0.00 0.01 

나는 이런 식으로 뭔가를하고 싶었던 것입니다. 미리 감사드립니다.

+1

당신이'Scanner' 클래스에 대해 잘 알고 있는가에 언급 된대로 fixedformat4j 볼 제안 할 수 있습니다? –

+0

String.split()도 잘 작동합니다. \ –

답변

2

아마도 데이터를위한 클래스를 만든 다음 사용자 지정 비교기를 사용하여 정렬을 작성하는 것이 가장 좋습니다.

당신은 당신이 사용할 수 있습니다

public class MyData{ 
    Date date; 
    float data[]; 
} 
List<MyData> data = new ArrayList<MyData>(); 
/// add everything into data 

Collections.sort(data, new Comparator<MyData>(){ 
    @Override 
    public int compare(MyData data1, MyData data2) { 
     // compare on year 
    } 
}); 
// Copy into new List 

Collections.sort(data, new Comparator<MyData>(){ 
    @Override 
    public int compare(MyData data1, MyData data2) { 
     // compare on month 
    } 
}); 
/// keep sorting and copying 
1

여기에 Scanner 클래스가 필요한 것 같습니다.

스캐너 스캐너 = 새 스캐너 (yourIntputStream);

이제 scanner.nextInt() 또는 스캐너에서 제공하는 다른 방법을 사용하여 데이터를 읽는 루프를 작성하십시오. 자세한 내용은 API 문서를 확인하십시오.

0

"split"-method를 사용하여 문자열을 배열로 변환 할 수 있습니다. 예 :

String[] splittedString = yourString.split( ) // six spaces  

그런 다음 모든 ArrayEntry를 3 칸 씩 다시 나누십시오.

0

4 개 필드를 얻으려면 데이터 클래스로 데이터를 읽어 Scanner를 사용하고, 목록에서 해당 저장해야

String sInput = "1974  1 0.00 0.01"; 
String[] fields = sInput.split("\\s+"); 

fields[0] 월이 fields[1], 등이됩니다.

정렬 된 데이터로 작업하려면 다른 배열의 모든 필드를 데이터의 구조체에 미리로드해야합니다.

+0

이것은 * java가 아닌 * 질문입니다.NET * question – Bohemian

+0

나는 알지 못했다. 예제를 조정했습니다. – lunadir

0

단계 :이 코드의 수에 달 충족시켜

String year = words[0]; 
String month = words[1]; 
String [] data = Arrays.copyOfRange(words, 2, words.length); 

: 두 부분을 추출

String[] words = input.split("\\s+"); 

단계 : 공백의 수에 분할하여 배열로 데이터를 추출 일.

관련 문제