Java 尝试通过扫描程序运行LinkedList映射时发生异常

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] =

我有:

这一切都在一个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] = 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++;
}