2

我需要让用户输入他们想要删除的名称,然后在数组中找到该名称所在的索引。然后我需要删除名称以及价格和评级。我可能只使用并行数组。我不确定它们的其他部分是否成功运行,因为我正在尝试使用 .remove() 并且出现错误:

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);
        }
    }
}
4

4 回答 4

4

一些东西。

  1. 数组没有 remove() 方法。如果要对 Array 数据结构执行该操作,则需要使用 ArrayList。
  2. 使用并行数组可能会令人困惑。相反,将所有信息放入它自己的对象中:

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

然后你可以写:

    ArrayList<Game> games = new ArrayList<Game>();
于 2014-02-07T20:07:58.623 回答
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.

于 2014-02-07T20:07:55.327 回答
3

没有remove办法Array。您可以使用该Arraylist.remove()方法。

于 2014-02-07T20:07:10.500 回答
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);
}
于 2014-02-07T20:11:24.190 回答