我需要让用户输入他们想要删除的名称,然后找到数组中保存该名称的索引。然后我需要删除名称以及价格和评级。我可能只使用并行数组。我不确定他们的其他部分是否正在成功运行,因为我正在尝试使用.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);
}
}
}
答案 0 :(得分:4)
一些事情。
并行数组可能会令人困惑。相反,将所有信息放入其自己的对象中:
class Game {
String name;
double price, rating;
}
然后你可以写:
ArrayList<Game> games = new ArrayList<Game>();
答案 1 :(得分:3)
remove
没有Array
方法。您可以使用Arraylist.remove()
方法。
答案 2 :(得分: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
。
答案 3 :(得分: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);
}