2014-02-07 1 views
2

Мне нужно, чтобы пользователь вводил имя, которое они хотели бы удалить, затем найдите индекс в массиве, в котором это имя удерживается. Затем мне нужно удалить имя вместе с ценой и рейтингом. Я могу использовать только параллельные массивы. Я не уверен, если они не другая часть работает успешно, потому что я пытаюсь использовать .remove() и я получаю сообщение об ошибке:Как удалить элементы из трех параллельных массивов одного и того же индекса в java?

cannot find symbol 

symbol: method remove(int) 

location: variable array1 of type String[] 

код

public static void removeGames(Scanner keyboard, String[] array1,    
     double[] array2, double[] array3, int currentLength) 
{ 
    String removeInput; 

    System.out.println("Enter the name of the game you would like to remove" 
      + " from the list: "); 
    removeInput = keyboard.next(); 

    for(int i = 0; i < array1.length; i++) 
    { 
     if(removeInput.equalsIgnoreCase(array1[i])) 
     { 
      array1.remove(i); 
      array2.remove(i); 
      array3.remove(i); 
     } 
    } 
} 
+0

Откуда вы узнали, что ** ** массив типа имеют 'удалить (INT)' метод? –

+1

Вы не используете параллельные массивы в первую очередь. Используйте один массив триплетов. – zapl

+0

Лучшим способом разработки этого было бы создание класса Game, в котором есть переменные-члены, такие как имя, цена и рейтинг; затем введите список - и вы можете вызвать remove() в списке. –

ответ

3

Существует нет remove метод Array , Вы можете использовать метод Arraylist.remove().

+1

(Ну, 'List.remove', из которых ArrayList является, безусловно, наиболее распространенным.) – user2864740

+1

(Ну,' Коллекция.remove' будет местом, откуда этот метод приходит: P) – zapl

3

Причина, по которой вы получаете эту ошибку, состоит в том, что объекты массива в Java не имеют метода .remove(). Если вам действительно нужна динамическая коллекция, из которой вы можете удалить объекты, вы должны использовать ArrayList.

Просто замените массивы в вашей подписи метода с ArrayLists, то в вашем теле заменить array1[i] с array1.get(i) так:

public static void removeGames(Scanner keyboard, ArrayList<String> array1,    
     ArrayList<Double> array2, ArrayList<Double> array3, int currentLength) { 
    String removeInput; 

    System.out.println("Enter the name of the game you would like to remove" 
      + " from the list: "); 
    removeInput = keyboard.next(); 

    for(int i = 0; i < array1.length; i++) { 
     if(removeInput.equalsIgnoreCase(array1.get(i)) { 
      array1.remove(i); 
      array2.remove(i); 
      array3.remove(i); 
     } 
    } 
} 

Просто убедитесь, что импортировать java.util.ArrayList.

+0

Кроме того, La-comadreja дает хороший совет об использовании объекта Game и просто имеет один ArrayList игр. Я рекомендую вам это сделать. Я не включил это в свой ответ, потому что хотел сосредоточиться только на том, что ArrayLists лучше подходят для этой работы, чем массивы. –

4

Несколько вещей.

  1. В массивах нет метода remove(). Если вы хотите выполнить эту операцию в структуре данных Array, вы хотите использовать ArrayList.
  2. Параллельные массивы могут смущать работу. Вместо этого поместите всю информацию в свой собственный объект:

    class Game { 
        String name; 
        double price, rating; 
    } 
    

Тогда вы можете написать:

ArrayList<Game> games = new ArrayList<Game>(); 
0

Если вам действительно нужно использовать массив, который вы должны написать свой собственный метод, который удаляет необходимое элемент. Поскольку у java есть довольно впечатляющая коллекция контейнеров в пакете java.util, я бы предложил использовать один оттуда. Поскольку вам нужно получить доступ к элементам по заданному индексу, я бы предложил использовать ArrayList. Если вы знаете индекс и хотите удалить элемент, используйте LinkedList.

Я бы посоветовал также кодирование с интерфейсом List, следовательно, ваш код будет выглядеть следующим образом:

public static void removeGames(Scanner keyboard, List<String> array1,    
    List<Double> array2, List<Double> array3) { 
    String removeInput; 

    System.out.println("Enter the name of the game you would like to remove" 
     + " from the list: "); 
    removeInput = keyboard.next(); 

    int index = array1.indexOf(removeInput); 
    array1.remove(index); 
    array2.remove(index); 
    array3.remove(index); 
} 
Смежные вопросы