2017-07-29 41 views
0
public int getSum(){ 
     int sum=0; 

     for(int i=1; i <= sqlite_master.getRowCount(); i++) 
     { 
      sum=sum+Integer.parseInt((String) sqlite_master.getValueAt(i, 2));  
     } 
     return sum; 
    } 

的代码被写入,以便获得一个特定列的总和在2列的表与一个列字符串和其他数字数组索引越界异常的JTable中

错误是

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2 
at java.util.Vector.elementAt(Vector.java:474) 

请提供一些解决方案以解决问题

+2

指数从0开始在Java中。不在1.为什么你将整数存储为字符串,而不是将它们存储为整数? –

回答

1

这应该会更好。索引从0开始,上升到行数减1.

public int getSum(){ 
     int sum=0; 

     for(int i=0; i < sqlite_master.getRowCount(); i++) 
     { 
      sum=sum+Integer.parseInt((String) sqlite_master.getValueAt(i, 2));  
     } 
     return sum; 
    } 
+1

(1+)发布此作为答案(我正要做同样的事情),而不是评论。现在OP可以“接受”答案,因此人们不需要继续阅读已经有解决方案的问题。 – camickr

+0

我更新了代码,但仍显示相同的问题。如果可能的话,你可以尝试采取其他方法来获得相同的解决方案。 – Evan

+0

@Evan也许你对列索引有同样的问题?如果您打算选择第二列,您应该将1作为索引(即'sqlite_master.getValueAt(i,1)')。作为其他索引的列索引也从0开始。除此之外,在您发布的小片段中没有更多可以看到的内容。考虑发布一个[MCVE]如果这个答案和这个评论不能解决你的问题。 –