2

I've been having a hard time trying to debug this exception: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1

This is my code

package com.Homework.Table; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class ArrayTable { static String [][] records; public static void main(String [] args) { String [] columns= { "col1", "col2", "col3","col4" }; String array ="A&B&1&May 8 2011 12:17AM;;E&D&5&May 8 2011 12:43AM;;F&G&5&May 8 2011 7:06AM;;H&I&1&May 14 2011 11:57PM"; records=to2dim (array ,";;","&"); Object rows[][] =records; JFrame f = new JFrame("JTable Sample"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container content = f.getContentPane(); JTable table = new JTable(rows, columns); JScrollPane scrollPane = new JScrollPane(table); content.add(scrollPane, BorderLayout.CENTER); f.setSize(300, 200); f.setVisible(true); } public static String [][] to2dim (String source , String outerdelim, String innerdelim) { String [][] result = new String [source.replaceAll ("[^" + outerdelim + "]", "").length () + 1][]; int count = 0; for (String line : source.split ("[" + outerdelim + "]")) { result [count++] = line.split (innerdelim); } return result; } } 

This is the response that I get

 Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 at javax.swing.JTable$1.getValueAt(Unknown Source) at javax.swing.JTable.getValueAt(Unknown Source) at javax.swing.JTable.prepareRenderer(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source) at javax.swing.plaf.ComponentUI.update(Unknown Source) at javax.swing.JComponent.paintComponent(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JViewport.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JLayeredPane.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paintToOffscreen(Unknown Source) at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) at javax.swing.RepaintManager.paint(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source) at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source) at sun.awt.SunGraphicsCallback.runComponents(Unknown Source) at java.awt.Container.paint(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 

Help me.

5
  • Array index outofbounds occurs when your array is too small - like: int[] i = new int[4]; which holds 5 elements Commented Sep 27, 2012 at 9:50
  • I can assure you my array is very large,the string is similar but larger my array is 4163x4,and its a 2D array Commented Sep 27, 2012 at 9:52
  • Maybe the "rows" array and the "columns" array has a different width, so when you apply them to JTable table data's row width and header's row width are different. Commented Sep 27, 2012 at 10:02
  • actually the size of the array is 4163x4 The columns size is 4 so they match !!:( Commented Sep 27, 2012 at 10:05
  • rows[0].length == columns.length Commented Sep 27, 2012 at 10:14

2 Answers 2

2
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import java.util.Arrays; public class ArrayTable { static String [][] records; public static void main(String [] args) { String [] columns= { "col1", "col2", "col3","col4" }; String array ="A&B&1&May 8 2011 12:17AM;;E&D&5&May 8 2011 12:43AM;;F&G&5&May 8 2011 7:06AM;;H&I&1&May 14 2011 11:57PM"; records=to2dim (array ,";;","&"); Object rows[][] =records; JFrame f = new JFrame("JTable Sample"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container content = f.getContentPane(); JTable table = new JTable(rows, columns); JScrollPane scrollPane = new JScrollPane(table); content.add(scrollPane, BorderLayout.CENTER); f.setSize(300, 200); f.setVisible(true); } public static String [][] to2dim (String source , String outerdelim, String innerdelim) { String [][] result = new String [(source.split (outerdelim)).length][]; int count = 0; System.out.println("result len "+result.length); for (String line : source.split (outerdelim )) { result [count++] = line.split (innerdelim); } System.out.println(Arrays.deepToString(result)); return result; } } 

This should do for you. [;;] matches only single character ,hence split based on this will add space in between two consecutive ;. So it should be changed to just ;;.

Sign up to request clarification or add additional context in comments.

2 Comments

IT DID :D thanx a Bunch was it the length+1 in the function to2dim skipping a array ? that is what I've noticed ?
That is another problem. You have to notice that array of length N means array[0].... array[N-1]
1

You have only one column in 2-nd, 4-th and 6-th rows. Should be 4 columns.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.