私はJavaを使い慣れていますが、プログラミングには新しくないので、私の最初のプロジェクトでは、職場の誰かのために.txt-.csvパーサーを作成することにしました。 .txtファイルの各行を読み込み、セクション、サブセクション、サブセクション、およびサブセクションのコンテンツ用に別々のマップに分けます。各マップは、それよりも上のマップに割り当てられます(詳細は後述)。私はそれをすべてうまく印刷しますが、私はそれを読み込もうとすると次のエラーが発生します:"java.lang.String cannot be cast to java.util.Map"
。このエラーはコードの実行後にのみ表示され、コンパイル中ではなく、NetBeans IDEでは表示されません。java.lang.Stringはjava.util.Mapにキャストできません
マイマップは、各オブジェクトは、その下の地図であることを次の形式である:(なぜJavaは、この簡単-_-連想配列は私が望むすべてあることはできません)
(Map)array=<string,Object>
(Map)subarray=<String,Object>
(Map)subsubarray=<String,Object>
(Map)subsubcontents=<String,String>
ができない場合がありこれを読む最も効率的な方法は、これを後で再帰関数に変換する計画ですが、私のコードは私のプロジェクトからコピー貼り付けされています。私はエラーが見つかった場所にコメントを付けました。
public static Map<String,Object> array=new HashMap<String,Object>();
/* Code for populating the following Maps and pushing them into array
<String,Object>subarray
<String,Object>subsubarray
<String,String>subsubcontents
*/
Set section=array.entrySet();
Iterator sectionI=section.iterator();
while(sectionI.hasNext()) {
Map.Entry sectionInfo=(Map.Entry)sectionI.next();
Map<String,Object> subMap=(Map)sectionInfo.getValue();
Set subSet=subMap.entrySet();
Iterator subI=subSet.iterator();
while(subI.hasNext()) {
Map.Entry subInfo=(Map.Entry)subI.next();
Map<String,Object> subsubMap=(Map)subInfo.getValue();
Set subsubSet=subsubMap.entrySet();
Iterator subsubI=subsubSet.iterator();
while(subsubI.hasNext()) {
System.out.println("test");
Map.Entry subsubInfo=(Map.Entry)subsubI.next();
Map<String,Object> subcontentsMap=(Map)subsubInfo.getValue();
/*
The above line seems to be causing the issues.
If you comment out the rest of this loop (below this comment)
the error will still appear. If you comment out the rest of this loop
(including the line above this comment) it disappears.
Power of deduction my dear Watson.
*/
Set subcontentsSet=subcontentsMap.entrySet();
Iterator keys=subcontentsSet.iterator();
while(keys.hasNext()) {
Map.Entry keyMap=(Map.Entry)keys.next();
}
Iterator values=subcontentsSet.iterator();
while(values.hasNext()) {
Map.Entry valueMap=(Map.Entry)values.next();
}
}
}
}
ご協力いただければ幸いです。私は数日間このことに苦しんできました。
stacktrace全体を投稿できますか? –
getStackTrace()が返す[Ljava.langStackTraceElement; @ c0a150 – mseancole