2014-02-15 1 views
-2

파일을 읽고 배열에 정보를 추가 한 다음 교환 순서를 사용하여 배열을 사전 순으로 정렬합니다. 문제는 내가 과제를 오해하고 문자열이 이미 입력 된 후에 별도의 정렬 방법을 사용하는 대신 배열에 입력 될 때 정렬해야한다는 것입니다. Heres는 내가 무엇을 :이 완벽 아직 작동배열을 입력 할 때 알파벳순으로 문자열 정렬 - Java

public class NumberCollection2 
{ 
    String nextName; 
    int nextNumber; 
    private Person[] people = new Person[50]; 
    private int size =0; 

    public void load() 
    { 
    try 
    { 
     Scanner in = new Scanner(new File ("numbers.txt")); 

     while (in.hasNextLine()) 
     { 
     nextName = in.next(); 
     nextNumber = in.nextInt(); 
     people[size]=new Person(nextName, nextNumber); 
     size++; 
     in.nextLine(); 

     } 

     //use exchange sort to sort in ascending alphabetical order 
     int i, j; 

     for (i = 0; i < size - 1; i++) 
     { 
     for (j = i + 1; j < size; j++) 
     { 
      if (people[ i ].getName().compareTo(people[ j ].getName()) > 0) 
      {            
      Person temp = people [ i ]; 
      people [ i ] = people [ j ];  
      people [ j ] = temp; 

      } 
     } 

     } 

    } 

내 교수가 배열 "사람"에 입력으로 정렬되어야하며 내가 그에게 접근하는 방법을 잘 모르겠습니다. 모든 조언/도움이 끝내 주셔서 감사합니다 !!!

이것은 내가 저의 저서에서 얻은 이메일입니다 : "전체 크레디트를 받으려면 배열의 정렬 된 위치에 각 항목을 삽입해야합니다. 전체를 읽은 다음 정렬 루틴. "

+0

하나의 요소를 다른 두 요소와 비교하여 두 개의 4 개의 루프를 비교하는 대신 루프 중 하나를 사용자 입력으로 바꾸는 것이 좋습니다. – aliteralmind

답변

0

는 "내 교수는이 입력으로 정렬 할 필요가있다"

이 연결리스트가 아닌 배열입니다.

따라서 스택/대기열 (FILO/FIFO)의 현재 항목 만 볼 수 있습니다.

교수님은 아마도 목록에 입력 된 방식대로 목록을 인쇄한다는 의미입니다.

목록을 대기열로 생성하여이 작업을 수행 할 수 있습니다. Java에서 사용할 수있는 전화가 있습니다 (Queue). StackLinkedList도 있습니다.

+0

귀하의 설명이 의미가 있지만 내 교수님이 보낸 이메일입니다 : "전체 크레딧을 받으려면 각 항목을 읽은대로 배열의 정렬 된 위치에 삽입해야합니다. 모든 내용을 읽는 것이 좋지 않습니다. 정렬 루틴을 호출하십시오. " 그래서 배열을 사용하고 있습니다. –

관련 문제