Java 使输入忽略小写或大写
我创建了一个项目列表,其中包含删除或修改其中一个项目的选项。 假设我正在添加带有大写字母(“Milk”)的项 然后,试图删除“牛奶”它不会让我。 很遗憾,我试着玩一些图珀凯斯或托洛凯斯游戏,但没有成功 在主要课堂上:Java 使输入忽略小写或大写,java,Java,我创建了一个项目列表,其中包含删除或修改其中一个项目的选项。 假设我正在添加带有大写字母(“Milk”)的项 然后,试图删除“牛奶”它不会让我。 很遗憾,我试着玩一些图珀凯斯或托洛凯斯游戏,但没有成功 在主要课堂上: public static void removeItem() { System.out.println("Please enter the item you want to remove"); String itemToRemove =
public static void removeItem() {
System.out.println("Please enter the item you want to remove");
String itemToRemove = in.next();
groceryList.removeItem(itemToRemove);
}
在列表类中:
public void removeItem(String itemToRemove) {
if (groceryList.contains(itemToRemove)) {
groceryList.remove(itemToRemove);
System.out.println("You've removed " + itemToRemove + " from the list!");
} else {
System.out.println("The item you've entered are not in the list!");
}
}
输出:
无法使用contains()和remove()方法检查项目。您需要使用蛮力方法,如:
public void removeItem(String itemToRemove) {
int i=0;
while(i<list.size()){
if (list.get(i).equalsIgnoreCase(itemToRemove)){
list.remove(i);
break;
}
i++;
}
}您可以使用带有自定义
比较器的树集,而不是列表
:
private final Set<String> groceries = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
private final Set groceries=new TreeSet(String.CASE不区分大小写\u顺序);
然后您可以将groceryList
重命名为groceries
,您的代码应该可以正常工作
使用集合的唯一缺点是,添加项目的顺序不再保留,您只能添加一次项目。我将在您收到的好选项中添加另一个选项
如果要使用列表
,可以执行以下操作:
groceryList.removeIf(s -> s.equalsIgnoreCase(itemToRemove));
(请注意,如果有多个具有该名称的项目,它将删除所有项目。如果您只想删除一个项目,可以使用此选项)
要检查杂货店列表是否包含要删除的项目,请执行以下操作:
groceryList.stream().anyMatch(s -> s.equalsIgnoreCase(itemToRemove))
此选项牺牲了时间复杂性,但它可能与您的用例无关
groceryList.stream().anyMatch(s -> s.equalsIgnoreCase(itemToRemove))