2011-12-15 4 views
2

Я занимаюсь университетским заданием, и у меня возникают проблемы с моим массивом.Удаление записей из 2-мерного массива

Я строй адресной книги консольного приложения на основе и мне нужно использовать 2D-массив, который имеет опцию добавления, удаления или печати содержимого массива ...

Я удаление тока записи, заменяя значения «XXX» -а, необходимо в краткой форме. Затем я просто скрываю значения «XXX» при печати на экране.

Но как только я удалю запись, когда дело доходит до печати всего массива, все, что указано после записи, которую я пытался удалить, вообще не отображается, кроме как после добавления новой записи.

Может ли кто-нибудь пролить свет на то, почему это может произойти?

+1

Показать код для печати массива. –

+0

Ваш код выглядит хорошо, ваша ошибка, похоже, находится в другой части вашего кода. – Heinzi

+6

'goto' ....' goto' ???? 8-O –

ответ

0

В коде вы удаляете весь столбец, как только оператор if обнаруживает истинное состояние, например. если address[1, 1] == DeleteName тогда ваш массив после того, как цикл будет выглядеть следующим образом:

A00 XXX A02 ... 
A10 XXX A13 ... 
A20 XXX A23 ... 
A30 XXX A33 ... 
... ... 

Так что, если вам нужно просто удалить запись вам потребуется две петли, как это:

for (int i = 0; i < 5; i++) 
{ 
    for(int j =0;j < 5; j++) 
    { 
     if (Address[i, j] == DeleteName) 
     { 
      Address[i, j] = "XXX"; 
      Console.WriteLine("Contact Deleted"); 
     } 
    } 
} 
+0

Спасибо, человек! Но это все еще похоже на ту же проблему на этапе печати, где Скрытие этой записи ничего не остановит после ее печати на экран. – MarkP

+0

@MarkP. При печати массива вам понадобятся две петли –

0

Кроме того, в вашем случае 3 похоже, что вы пропустили {} после своего заявления

else 
{ 
    FName = Address[i, 0]; 
    LName = Address[i, 1]; 
    Number = Address[i, 2]; 
    Road = Address[i, 3]; 
    Town = Address[i, 4]; 
    Console.WriteLine(LName +", " + FName + " - "+ Number + ", " + Road+", " + Town); 
} 
Смежные вопросы