救命呀,救命呀,100分,高手帮我 数据的列数不一致:可能recordField的列数比headerField少。确认你的数据是否正确 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好的,我全贴出来,老大们可要耐心呀,我愁死了 public void run(){ analizeText(); } synchronized private void analizeText(){ file=new File(fileName); try{ fileIn=new FileInputStream(file); bufferIn=new BufferedReader(new InputStreamReader(fileIn)); readLine=bufferIn.readLine();//--读取文件中的每一行 StringTokenizer st=new StringTokenizer(readLine,",",false);根据逗号进行拆分 headerField=new Vector(); while(st.hasMoreElements()){ headerField.addElement(st.nextElement());放到vector中,因为文件中第一行是表头 } recordField=new Vector(); while((readLine=bufferIn.readLine())!=null){ st=new StringTokenizer(readLine,",",false);读出每个记录 tempVector=new Vector(); while(st.hasMoreTokens()){ tempVector.addElement(st.nextToken());,将每个记录放到一个vector中 } System.out.println("temp:"+tempVector.size());每次大小都是一样的 recordField.addElement(tempVector); } bufferIn.close(); fileIn.close(); System.out.println("record:"+recordField.size());//--用于校验出错时是否下标发生变化,结果发现,没有变化 System.out.println("header:"+headerField.size()); mainGUI.setTable(recordField,headerField);--调用setTable方法 } catch(IOException e){e.printStackTrace(); } }以上代码是分析文件然后放到两个vector中,下面是mainGUI类的setTable方法:class MainGUI extends JFrame{ public void setTable(Vector recordField,Vector headerField){DefaultTableModel defaultTableModel=new DefaultTableModel(recordField,headerField); jTable.setModel(defaultTableModel);//---就是这行出错} 我尝试过了,每次保证传过来的recordField和headerField都是对应的,长度都是一致的,真奇怪了,是不是java的bug呀 问题1. 是否文本文件中的 "," 数量都是和 第一行一样多?问题2. 仔细看看你的文本文件的最后一行,是否是一个空行,即除了回车换行外,没有其他的字符,此时 当读到最后一行时,readLine() 读到的是 "" 而不是 null hesi726老大,让你多费心了,我觉得不是这个问题,文件内容如下:日期,产品名称,规格/用途,地 区,价格类型,最高价,最低价,比上周6月27日,PVC ,悬浮 ,东南亚 ,到岸价 ,610?,590?,17.5?6月27日,PVC ,悬浮 ,远东 ,到岸价 ,600?,590?,2.5?6月27日,PVC ,悬浮 ,美国海湾 ,离岸价 ,530?,520?,5?6月27日,PVC ,悬浮 ,西北欧 ,FD ,686?,639?,-10?6月27日,PVC ,悬浮 ,西北欧 ,离岸价 ,550?,530?,10?补充,setTable方法修改如下: public void setTable(Vector recordField,Vector headerField){ DefaultTableModel tableModel=(DefaultTableModel)jTable.getModel(); tableModel.setColumnCount(0); tableModel.setRowCount(0); Iterator iterator=headerField.iterator(); while(iterator.hasNext()){ tableModel.addColumn("amjn");//--即使每次加这个常量,每个循环8次,他有时候也报错 iterator.next(); }这里没有增加内容,只是增加列了第一次点击肯定是不会错的,关键就是下面的几次点击} 从键盘只能输入8个字符的JAVA程序怎么写? 如何用sql2005练数据库,能给个实例和详细配置吗,急用,在线等 浮点数表示方法 有谁对MSN协议熟悉吗 几道面试道,大家帮帮忙 resin如何使用struts,在eclipse里面怎么创建这样的一个工程能在eclipse里面启动resin,并调试类和页面 一个HashMap问题 为何读不到一起? 当出现这种错误时,怎么改? 我正在用jbulider做一个电子邮件客户程序,给点建议!100分! 请高手相助!(急) 这个简单的applet中单击按钮事件为什么不能触发呀!!!!!!!!
analizeText();
} synchronized private void analizeText(){
file=new File(fileName);
try{
fileIn=new FileInputStream(file);
bufferIn=new BufferedReader(new InputStreamReader(fileIn));
readLine=bufferIn.readLine();//--读取文件中的每一行
StringTokenizer st=new StringTokenizer(readLine,",",false);根据逗号进行拆分
headerField=new Vector();
while(st.hasMoreElements()){
headerField.addElement(st.nextElement());放到vector中,因为文件中第一行是表头
}
recordField=new Vector();
while((readLine=bufferIn.readLine())!=null){
st=new StringTokenizer(readLine,",",false);读出每个记录
tempVector=new Vector();
while(st.hasMoreTokens()){
tempVector.addElement(st.nextToken());,将每个记录放到一个vector中
}
System.out.println("temp:"+tempVector.size());每次大小都是一样的
recordField.addElement(tempVector);
}
bufferIn.close();
fileIn.close();
System.out.println("record:"+recordField.size());//--用于校验出错时是否下标发生变化,结果发现,没有变化
System.out.println("header:"+headerField.size());
mainGUI.setTable(recordField,headerField);--调用setTable方法
}
catch(IOException e){e.printStackTrace();
}
}以上代码是分析文件然后放到两个vector中,下面是mainGUI类的setTable方法:class MainGUI extends JFrame{
public void setTable(Vector recordField,Vector headerField){
DefaultTableModel defaultTableModel=new DefaultTableModel(recordField,headerField);
jTable.setModel(defaultTableModel);//---就是这行出错
}
问题2. 仔细看看你的文本文件的最后一行,是否是一个空行,即除了回车换行外,没有其他的字符,此时 当读到最后一行时,readLine() 读到的是 "" 而不是 null
日期,产品名称,规格/用途,地 区,价格类型,最高价,最低价,比上周
6月27日,PVC ,悬浮 ,东南亚 ,到岸价 ,610?,590?,17.5?
6月27日,PVC ,悬浮 ,远东 ,到岸价 ,600?,590?,2.5?
6月27日,PVC ,悬浮 ,美国海湾 ,离岸价 ,530?,520?,5?
6月27日,PVC ,悬浮 ,西北欧 ,FD ,686?,639?,-10?
6月27日,PVC ,悬浮 ,西北欧 ,离岸价 ,550?,530?,10?补充,setTable方法修改如下: public void setTable(Vector recordField,Vector headerField){ DefaultTableModel tableModel=(DefaultTableModel)jTable.getModel();
tableModel.setColumnCount(0);
tableModel.setRowCount(0);
Iterator iterator=headerField.iterator();
while(iterator.hasNext()){
tableModel.addColumn("amjn");//--即使每次加这个常量,每个循环8次,他有时候也报错
iterator.next();
}
这里没有增加内容,只是增加列了
第一次点击肯定是不会错的,关键就是下面的几次点击
}