2015-10-17 2 views
0

Я действительно борюсь с этой частью моей проблемы. Я смотрел видео в течение нескольких часов и изучал онлайн, но я не могу понять, что это правильно. Мне нужно создать цикл for, который проверяет строку для meg, удаляет ее и переносит остальные элементы. это не аррайалист.Удаление повторяющейся строки из массива

Написать второй, традиционный цикл, который проверяет каждый элемент для строки « Meg », если он найден в массиве, удалите его, переместить остальные элементы и отобразить массив имен.

Я знаю, что мой цикл будет идти между моей фамилии клиента & для напечатать it.I'm просто растерялся от того, что делать дальше.

Вот мой текущий код:

public class CustomerListerArray { 
    public static void main(String[] args) { 
     String customerName[] = new String[7]; 
     customerName[0] = "Chris"; 
     customerName[1] = "Lois"; 
     customerName[2] = "Meg"; 
     customerName[3] = "Peter"; 
     customerName[4] = "Stewie"; 
     for (int i = customerName.length - 1; i > 3; i--) { 
      customerName[i] = customerName[i - 2]; 
     } 
     customerName[3] = "Meg"; 
     customerName[4] = "Brian"; 
     for (String name: customerName) { 
      System.out.println(name); 
     } 
    } 
} 

ответ

0

Чтобы следовать инструкциям, вы были даны, вы могли бы попробовать что-то вроде:

int max = customerName.length; 
for (int i = 0; i < max; i++) { // Traditional for loop 
    if ("Meg".equals(customerName[i]) { // Look for the name "Meg" 
     // If found, shift the array elements down one. 
     for (int j = i; j < (max - 1); j++) { 
      customerName[j] = customerName[j+1]; 
     } 
     i--; // Check the i'th element again in case we just move "Meg" there. 
     max--; // Reduce the size of our search of the array. 
    } 
} 

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

for (int i = 0; i < max; i++) { 
    System.out.println(customerName[i]); 
} 
+0

'equalsIgnoreCase' ?? – sam

+0

@ sam2090 нет ничего в вопросе о поиске без учета регистра, но это, безусловно, может быть сделано, если потребуется. – dave

+0

На самом деле nvm. узнал, что я сделал не так. – BlueJay

0

Идея заключается в том, чтобы перебрать все индексы вашего массива и проверить, если они равны "Meg". Если это не так, значение индекса конкатенируется с объектом StringBuilder.

В конце мы берем наше значение объектной строки StringBuilder и разбиваем его на дополнительные пространства, которые мы помещаем между именами.

И наконец, у нас есть наш новый массив String с требуемым размером.

public static void main(String[] args) { 
    String customerName[] = new String[7]; 
    customerName[0] = "Chris"; 
    customerName[1] = "Lois"; 
    customerName[2] = "Meg"; 
    customerName[3] = "Peter"; 
    customerName[4] = "Stewie"; 
    customerName[5] = "Meg"; 
    customerName[6] = "Brian"; 
    StringBuilder names = new StringBuilder(); 
    for (String name: customerName) { 
     if (!name.equals("Meg")) names.append(name + " "); 
    } 
    String[] myNewArray = names.toString().split(" "); 
    System.out.println(Arrays.toString(myNewArray)); 
} 

Выход:

[Chris, Lois, Peter, Stewie, Brian] 
+0

'equalsIgn oreCase'? – sam

+0

@ sam2090 No => "каждый элемент для строки" Meg "" –

Смежные вопросы