【发布时间】:2017-10-04 17:57:43
【问题描述】:
你能帮我吗.. 我需要一个简单的程序来预处理一些数据以进行数据挖掘,我正在尝试在 java 中执行此操作,但它会给出数组超出键异常,你能帮我修复它吗?谢谢。
任务非常简单,只需读取两个文件,然后将所需信息写入第三个文件。
try {
while ((linhapessoa = pessoain.readLine())!= null)
{
String[] splitlinhapessoa = linhapessoa.split(",");
String pessoaId = splitlinhapessoa[1] + splitlinhapessoa[2] + splitlinhapessoa[3] + splitlinhapessoa[4]
+ splitlinhapessoa[23];
String domclId = splitlinhapessoa[1] + splitlinhapessoa[2] + splitlinhapessoa[3] + splitlinhapessoa[4];
while ((linhaconsumo = consumoin.readLine())!= null)
{
String[] splitlinhaconsumo = linhaconsumo.split(",");
String con_pessoaId = splitlinhaconsumo[1] + splitlinhaconsumo[2] + splitlinhaconsumo[3] +
splitlinhaconsumo[4] + splitlinhaconsumo[21] ;
String con_domclId = splitlinhaconsumo[1] + splitlinhaconsumo[2] + splitlinhaconsumo[3] + splitlinhaconsumo[4];
if (pessoaId.equals(con_pessoaId))
{
if (((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "801"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1101"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1301"))|
((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "2401"))|
((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "2402")))
{cons_celular = "1"; val_cons_celular = splitlinhaconsumo[11];}
if (((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "801"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "901"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1101"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1401"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "401"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "501")))
{cons_telfixo = "1"; val_cons_telfixo = splitlinhaconsumo[11];}
if ((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "1101"))
{
cons_shows = "1"; val_cons_shows = splitlinhaconsumo[11];
}
if (((splitlinhaconsumo[9] == "13") && (splitlinhaconsumo[10] == "1701"))|
((splitlinhaconsumo[9] == "15") && (splitlinhaconsumo[10] == "2701"))|
((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "5701"))|
((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "2601"))|
((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "901")))
{cons_dvd = "1"; val_cons_dvd = splitlinhaconsumo[11]; }
if (((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "502"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "503"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "504"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "505"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "506"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "801"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "901"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1001"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1301"))|
((splitlinhaconsumo[9] == "6") && (splitlinhaconsumo[10] == "1401")))
{cons_internet = "1"; val_cons_internet = splitlinhaconsumo[11]; }
if ((splitlinhaconsumo[9] == "28") && (splitlinhaconsumo[10] == "101"))
{cons_cinema = "1"; val_cons_cinema = splitlinhaconsumo[11]; }
String linhasaida = linhapessoa + "," + cons_celular + "," + val_cons_celular + "," + cons_telfixo+ "," + val_cons_telfixo +
"," + cons_shows + "," + val_cons_shows + "," + cons_dvd + "," + val_cons_dvd + "," + cons_internet + "," + val_cons_internet
+ "," + cons_cinema + "," + val_cons_cinema;
processado.write(linhasaida);
}
【问题讨论】:
-
您能粘贴完整的错误消息和堆栈跟踪吗?你能用更小的代码示例重现这个问题吗?
-
不要将字符串与
==进行比较。并向我们展示minimal reproducible example。穿过巨大的墙壁代码很烦人。 -
'读取文件时'与此无关。保持相关性。
标签: java indexoutofboundsexception