2013-12-13 7 views
0

내가 만든 2 차원 배열 인 Flashcard 상자에 카드를 추가하는 방법을 만들어야합니다. 그것은 3 개의 문자열 매개 변수 (단어, 정의, 주제)를 가지고 있습니다. 메서드는 세 개의 String 매개 변수, 즉 새 Flashcard에 대한 정보를 취합니다. 은 카드가 상자에 성공적으로 추가되었는지 여부를 나타내는 부울 값을 반환합니다. 다음과 같은 방법으로 카드를 추가하려고 시도합니다 : 카드에 포함 된 제목이 상자에 있고 카드가 상자에없는 경우 카드를 상자에 추가 할 수 있습니다. 카드를 추가하고 주제에 해당하는 행의 공간이 충분하지 않은 경우 배열을 확장하여 각 주제에 카드를 한 개 더 넣으려면 방이 있어야합니다. 카드가있는 대상이 상자에 없다면 다음 비어있는 행에 카드를 저장해야합니다 (이는 상자에 제목을 추가하는 것과 유사합니다). 빈 행이 없으면 배열을 확장하고 행을 추가해야합니다. 카드가 이미 상자에 있으면 행에 추가 할 수 없습니다. 제발 도와주세요, 나는 이것을 학습 도구로 만들고 있습니다.2D 배열에 슬롯 추가하기

public FlashcardBoxAddCardHelp 
{ 
    public boolean addCard(String subject, String word, String definition) 
    { 
     Flashcard toAdd = new Flashcard(subject, word, definition); 
     for(loop through rows) 
     { 
     for(loop through columns) 
      { 
       if(current card is the same as the card to add) 
       { 
        return false; 
       } 
      }   
     } 

     int subjectIndex = -1; 

     for(loop through rows) 
     { 
      if(currentRow has subject I want) 
      { 
       subjectIndex = currentRow; 
      } 
     } 

     if(subject is in the box) // 
     { 
      if(there is room in that row) 
      { 
       add the card to the first free slot in that row 
      }else // do this last! 
      { 
      // grow the array to add a column 
      // add the card to the new column for your subjIndex row 
      // update the counts to keep track of how many columns you have 
        //  and how many columns you have room for 
      } 
     }else 
     { 
      if(there is room for a new subject) 
      { 
       add the card to the first free row 
      }else // do this last! 
      { 
      // grow the array to add a row 
      // add the card to the first slot in that new row 
      // update the counts to keep track of how many rows you have 
        //  and how many rows you have room for 
      } 
     } 

     return true; 
    } 
} 
+1

당신은 원시 배열이 아닌 ArrayList를 사용하고 싶습니다. ArrayList를 사용하면 "배열 확장 또는 축소"에 대해 걱정할 필요없이 항목을 추가하고 제거 할 수 있습니다. ArrayList 내부적으로 primative 배열을 사용하고 모든이 당신을 위해 작동합니다. – slipperyseal

+2

@SlipperySeal 나는 더 나아가서 초기 주제 선언에 대한지도를 사용하는 것을 제안합니다. map.get ("subject"). get ("word")를 사용하는지도지도는 정의를 반환하고 제목 내에 값을 추가하면 키 - 값 쌍이 추가됩니다. – user2573153

+0

가 동의했습니다. 그리고 이것이 중요하다면 삽입 순서/자연 순서 등으로 값을 저장하는 다양한 종류의 맵이 있습니다 – slipperyseal

답변

0

확인 : 여기

은 따를 필요가 기입 의사 코드입니다. 배열에 슬롯을 추가 할 수는 없습니다. 이전에 배열보다 길이가 1 인 배열을 만든 다음 이전 배열을 새 배열과 동일하게 설정하고 모든 이전 정보를 새로운 배열. ArrayList의 ArrayList를 사용하는 것이 더 쉬울 수도 있습니다. 이 시도 :

ArrayList<ArrayList<FlashCard>> subjects = new ArrayList<ArrayList<FlashCard>>(); 

을 그리고 당신이 플래시 카드 추가 할 때 : 당신이 설명을 원하는 경우

if (subject there) // Find subject using for loops 
{ 
    subject = /*that subject*/; 
    subject.add(flashcard); 
} 
else 
{ 
    ArrayList<FlashCard> subject = new ArrayList<FlashCard>(); 
    subject.add(flashcard); 
    subjects.add(subject); 
} 

코멘트를. 즉 나머지 코드는 있지만 매우 간단합니다.

+0

각 행과 열을 하나씩 늘린 다음 배열을 새로 크기가 조정 된 배열로 복사하는 방법을 보여줄 것입니까? – user3097547

+0

왜 배열입니까? 학교 프로젝트가 아니고 배열을 사용하고 있다면 __have__ 배열리스트를 사용하십시오. –