[英]startsWith using error in java
定义变量:
LinkedList list1=new LinkedList();
list1 中的Object get()
获取 list1 的一个节点
list1 中的Object remove()
删除 list1 的一个节点
count()
是 list1 的长度
for(int i=1;i<list1.count();i++){
if(list1.get(i).startsWith('"',0)) //Error here
list1.remove(i);
}
错误:找不到符号
符号:方法 charAt(int)
位置:类对象
如何解决这个问题? 我想删除 list1 中以 (") 开头的节点。
startsWith
是String
类中的一个方法; 您使用的是原始 LinkedList 类型,因此它被视为LinkedList<Object>
。 如果您希望使用字符串,请将其设为LinkedList<String>
。startsWith
只接受String
参数,不接受char
参数。 使用startsWith("\\"")
代替。startsWith
的第二个参数是多余的; 不提供第二个参数将假定起始位置为 0。if
语句之后有一个无关的分号。 这将导致if
主体被视为空。 绝对删除此分号并可选择使用花括号。您修改后的解决方案可能如下所示:
LinkedList<String> list1 = new LinkedList<String>();
// [...] Populate the list accordingly here
for(int i=1; i < list1.count(); i++){
if (list1.get(i).startsWith("\"")) {
list1.remove(i);
}
}
补充说明:
例如:
[ "a", "b", "c", "d" ]
^
(remove element at index 0)
[ "b", "c", "d" ]
^
(remove element at index 1... uh oh, we missed "b"!)
[ "b", "d" ]
^
(remove element at index 2... ERROR; index out of bounds)
如果它是一个字符串列表,则需要告诉编译器。 Java 没有鸭子类型,您必须明确告诉编译器 Object 是一个字符串。
List<String> list1=new LinkedList<String>();
当以这种方式声明时, get(i)
将返回一个 String 类型的引用,您可以使用它的方法。
如果不指定列表类型,Java 会将 is 视为Object
的列表,并且没有Object.charAt()
方法。 添加<String>
类型:
LinkedList<String> list1 = new LinkedList<String>();
或者,如果没有,向get
调用添加一个演员表:
if (((String) list1.get(i)).startsWith("\\"", 0))
String.startsWith()
方法接受一个字符串参数,而不是一个字符。
if (list1.get(i).startsWith("\\""))
列表索引是从 0 开始的。
for (int i = 0; i < list1.count(); i++) ^
您不应该将get(int)
与 LinkedList 一起使用。 此方法用于随机访问。 链表可以快速按顺序遍历,但随机访问速度较慢。 您应该按顺序遍历列表,或者使用支持快速随机访问的ArrayList 。
for (String str: list1) { } // or List<String> list1 = new ArrayList<String>();
在迭代列表时从列表中删除元素很棘手。 最好的方法是使用迭代器。
Iterator<String> it = list1.iterator(); while (it.hasNext()) { String str = it.next(); if (str.startsWith("\\"")) { it.remove(); } }
您正在尝试在 Object 上使用 startWith,将其类型转换为 String。
if(((String)list1.get(i)).startsWith('"',0))
if(list1.get(i).startsWith("\\"",0))
List<String> itemsToBeRemoved = new ArrayList<String>();
for(int i=1;i<list1.count();i++){
String str = list1.get(i);
if(str.startsWith("\""))
itemsToBeRemoved.add(str);
}
list1.removeAll(itemsToBeRemoved);
在尝试调用charAt
方法时,您应该指定 LinkedList 将保存的对象类型或执行charAt
。 就像是:
LinkedList<String> list1=new LinkedList<String>();
或转换为String
if (((String) list1.get(i)).startsWith("\""))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.