Java 尝试通过扫描程序运行LinkedList映射时发生异常
我有: 这一切都在一个while循环中。Eclipse告诉我做Java 尝试通过扫描程序运行LinkedList映射时发生异常,java,Java,我有: 这一切都在一个while循环中。Eclipse告诉我做Scanner sc=newscanner((可读)list.get(lc.get(i)).useDelimiter(\\t”)我认为这是导致问题的原因。列表中的字符串是格式化的字符串 编辑:这是错误: Scanner Scanner = new Scanner( myMap.get(get Object Key).get(index number)).useDelimiter(\\t); firstString[i] =
Scanner sc=newscanner((可读)list.get(lc.get(i)).useDelimiter(\\t”)代码>我认为这是导致问题的原因。列表中的字符串是格式化的字符串
编辑:这是错误:
Scanner Scanner = new Scanner( myMap.get(get Object Key).get(index number)).useDelimiter(\\t);
firstString[i] = sc.next();
secondString[i] = sc.next();
thirdString[i] = sc.next();
i++;
编辑:我的方法:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Readable
at HashDirectory.deleteEntryByName(HashDirectory.java:218)
at HashDirectory.main(HashDirectory.java:2332)
public void deleteEntry(字符串条目){
字符串[]姓氏=新字符串[计数];
字符串[]in=新字符串[计数];
字符串[]外部=新字符串[计数];
字符Ch=条目。字符(0);
Character LowerCaseCh=Character.toLowerCase(Ch);
int i=0;
while(i
摆脱可读的类型转换。第一,你试图将字符串转换为可读的,这是你做不到的。第二,扫描器可以将字符串作为构造函数
我还是要责骂你。你应该听听你的编译错误。它告诉你一个字符串不能转换为可读的。这是正确的。一个字符串不能转换为可读的。但是你正在转换一个字符串为可读的。为什么?在哪里?要回答“在哪里”,请分成几行:
public void deleteEntry(String Entry) {
String[] surname= new String[count];
String[] in= new String[count];
String[] ext= new String[count];
Character Ch = Entry.charAt(0);
Character LowerCaseCh = Character.toLowerCase(Ch);
int i = 0;
while ( i < list.get(LowerCaseCh).size()) {
Scanner scan = new Scanner( (Readable) list.get(LowerCaseCh).get(i)).useDelimiter("\\t");
surname[i] = sc.next();
in[i] = sc.next();
ext[i] = sc.next();
i++;
}
if (Arrays.asList(surname).contains(Entry) == true) {
int x = Arrays.asList(surname).indexOf(Entry);
list.get(LowerCaseCh).remove(x);
count--;
}
List l1=List.get(小写);
字符串s=l1.get(i);
可读的r=(可读的)s;//尝试编译时出错
扫描仪扫描=新扫描仪(r)。使用分隔符(\\t”);
因此,编译器将准确地告诉您错误所在
下一步。它告诉你有一个构造函数,它接受一个字符串。所以使用它。为什么要使用扫描仪
使用String.split
代替
List<List<String>> l1 = list.get(LowerCaseCh);
String s = l1.get(i);
Readable r = (Readable) s; // error this line when you try to compile
Scanner scan = new Scanner( r ).useDelimiter("\\t");
while(i
请显示myMap
Map myMap=new HashMap()的数据结构;链接列表是什么?list
仍然很神奇。我们不知道它是什么类型,也不知道它来自哪里。@Java1字符串来自一个文件。它们类似于stringstring,这就是为什么我有“\\t”扫描器有一个字符串的构造函数-那么为什么会出现错误呢?@Java1\\t
v.“\\t”
正如问题所说。这不是与(可读的)有关吗?我一生中从未见过它,只是启动了Java。@djechlin如果我删除可读的eclipse不喜欢它,我会得到“扫描器(对象)未定义的构造函数”给了我一个选择,让我把论点defined@djechlin我像myMap.put('a',new LinkedList())一样将我的LinkedList添加到映射中;因此它没有被声明为字符串,您认为是这样吗?
while ( i < list.get(LowerCaseCh).size()-1) {
String []arr = ((String)list.get(LowerCaseCh).get(i)).split ("\\t");
surname[i] = arr[0];
in[i] = arr[1];
ext[i] = arr[2];
i++;
}