Problem: "ArrayIndexOutOfBounds Exception"

Status
Nicht offen für weitere Antworten.

Marie Curie

Aktives Mitglied
Hallo alle miteinander,

habe gerade ein Problem mit einer for-Schleife und einer ArrayList.
Die ArrayList wird durch die for-Schleife durchlaufen und soll nach der Reihe einem Vector hinzugefügt werden.
Der Vector dient als Spaltenbezeichnung für eine JTable.

Eigentlich kein Problem...aber ich komme wegen der o. g. Exception weiter:

Code:
		if(!(bezeichnung.size() == 0)){

			for(int i = 1; i <= bezeichnung.size() - 1; i++){
					String eineSpalte = bezeichnung.get(i);
					bezeichnungsVector.add(eineSpalte);
			}
		}
	}

Da das bisher immer funktioniert hat, verstehe ich nicht, was daran falsch ist?!

Hoffe ihr könnt mir helfen.

Liebe Grüße,
Marie
 
G

Guest

Gast
wieso das umständliche -1 ?

(int i=1; i < bezeichnung.size(); i++)
 
S

SlaterB

Gast
> was daran falsch ist?!
absolut nichts, läuft tadellos:

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {

        List<String> bezeichnung = new ArrayList<String>();
        bezeichnung.add("a");
        bezeichnung.add("b");

        Vector<String> bezeichnungsVector = new Vector<String>();

        // dein Code
        if (!(bezeichnung.size() == 0))
        {
            for (int i = 1; i <= bezeichnung.size() - 1; i++)
            {
                String eineSpalte = bezeichnung.get(i);
                bezeichnungsVector.add(eineSpalte);
            }
        }
        // dein Code


        System.out.println(bezeichnungsVector);
    }
}

es hängt also von deinem restlichen Code ab,

-----

dass du bei Index 1 anfängst, das erste Element der Liste aber Index 0 hat, ist gewollt?
 

Marco13

Top Contributor
Die Abfrage
if(!(bezeichnung.size() == 0)){
könnte man etwas lesbarer schreiben
if(bezeichnung.size() != 0){
oder
if(bezeichnung.size() > 0){
aber sie ist sowieso überflüssig: Wenn bezeichnung.size()==0 ist, wird die schleife soewieso nicht durchlaufen. Poste ggf. mal was compilierbares, wo der Fahler auftritt, oder schreib' in deine Schleife
Code:
for(int i = 1; i <= bezeichnung.size() - 1; i++)
{
    System.out.println("i ist "+i+" und size is "+bezeichnung.size());
das hilft vielleicht schon.
 

Marie Curie

Aktives Mitglied
Danke für das schnelle Post!

bei

Code:
i < bezeichnung.size()

nimmt er alle Elemente der ArrayList, bis auf das Letzte.
(Und die Exception wird weiterhin geworfen)

mit

Code:
i <= bezeichnung.size() - 1

nimmt er alle Elemente die kleiner sind als die Größe und das Letzte.
Mach ich das -1 nicht, versucht er den Index der ArrayList auf die Größe des Inhaltes zu setzen, das geht aber nicht.
z.B.

ArrayList Größe 6
Index von 0 - 5

klar, dass dann eine Exception geworfen wird.

Was ich vergessen hatte:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0

Liebe Grüße
 
S

SlaterB

Gast
i < bezeichnung.size()
ist mit
i <= bezeichnung.size() - 1
äquivalent,
egal was du dir an Begründungen zusammenbastelst,

-------

egal, sehr wahrscheinlich liegt es daran, dass du mit i=1 statt i=0 anfängst,
so hast du zu wenig Elemente kopiert
 

Marie Curie

Aktives Mitglied
i < bezeichnung.size()

liefert mir trotzdem nicht alle Elemente, das letzte bleibt verschollen.

int i = 1 war ein Schreibfehler, im Code fängt der Zähler bei 0 an.

Ich wüsste nicht wo sonst der Fehler noch auftreten kann.

Code:
System.out.println("i ist "+i+" und size is "+bezeichnung.size());

funktioniert ohne Probleme (ohne Exception). Aber sobald ich die Elemente wieder in den Vector übertragen will erhalte ich eine Exception
 
S

SlaterB

Gast
> i < bezeichnung.size()
> liefert mir trotzdem nicht alle Elemente, das letzte bleibt verschollen.

nehmen wir mal eine Liste mit 3 Elementen, Size = 3, Indexe 0, 1, 2

i <= bezeichnung.size() - 1


i= 0 ok
i= 1 ok
i= 2 ok
i= 3 Abbruch, alle drangekommen


i < bezeichnung.size()


i= 0 ok
i= 1 ok
i= 2 ok
i= 3 Abbruch, alle drangekommen



wo zum Himmel siehst du einen Unterschied??
warum zum Himmel sollte das letzte verschollen bleiben??



--------

dass dein Code funktioniert habe ich ja im ersten Posting geschrieben,
jetzt kannst du noch 10x schreiben dass du nicht weiß, wo der Fehler auftreten kann,
dieses Topic bring das nicht voran ;)
 

Marie Curie

Aktives Mitglied
ändert nichts an der Ausgabe, die ich habe. Da ist das letzte Element trotzdem nich drin.

Lag an dem Vector, hab jetzt in der Methode einen eigenen Vector erstellt. Der Vector bezeichnung bekommt dann diesen Vector zugewiesen.

Die Tabelle wird in einem neuen Dialog angezeigt, nur leider bleibt der Platz, an dem die Tabelle steht, leer. Vorher wurde die Tabelle angezeigt, obwohl die Exception geworfen wurde.

Methode, die den DB-Query ausführt, das Ergebnis "results" der Tabelle als Werte zuweist.
Code:
	public Vector<Vector<String>> leseDB(ArrayList<String> spalten, ArrayList<String> tabellen, String suchbegriff){
		
		statement = null;
		result = null;
		
		try 
		{		
				StringBuilder select = new StringBuilder("SELECT ");
			   	for(int i = 0; i <= spalten.size(); i++){
					
					if(i == spalten.size() - 1){
						select.append(spalten.get(i) + " ");
					}
					else if(i < spalten.size() - 1){
						select.append(spalten.get(i) + ", ");
					}
			   	}
				StringBuilder from = new StringBuilder("FROM ");
				from.append(tabellen.get(0));
				from.append(" INNER JOIN ");
				for(int n = 1; n <= tabellen.size() - 1; n++){
					from.append(tabellen.get(n) + " ON (Kunde.Kundennummer = " + tabellen.get(n) + ".Kundennummer)");
				}
				
				StringBuilder where = new StringBuilder(" WHERE ");
				where.append(suchbegriff + ";");
				
				statement = connection.createStatement();
				result = statement.executeQuery(select.toString() + from.toString() + where.toString());

				if(result != null){
					Vector<Vector<String>> results = new Vector<Vector<String>>();
					
					java.sql.ResultSetMetaData rsmd = result.getMetaData(); 
					x = rsmd.getColumnCount();
					
					while(result.next()){	

						Vector<String> detail = new Vector<String>();
					
						detail.add(String.valueOf(result.getInt("Kundennummer")));
						detail.add(result.getString("Kundenname"));
						detail.add(result.getString("Plz"));
						detail.add(result.getString("Ort"));
						detail.add(result.getString("EMail"));
						results.add(detail);
						
					}
					System.out.println(results);
					System.out.println(getBezeichnungen());
					meinModel.setDataVector(results, getBezeichnungen());
					return results;
				}
		}
		catch (SQLException ex1) 
		{
				parent.fehlerBearbeitung(ex1.getMessage());
				ex1.printStackTrace();
		}
		return null;
	}

Die Methode erzeugt die Tabelle und liefert sie zurück.
Code:
	public javax.swing.JTable tabelleErzeugen(){
		meineTabelle = new javax.swing.JTable(meinModel);
		meineTabelle.setModel(meinModel);

		System.out.println(meineTabelle.getRowCount());
		
		return meineTabelle;
	}

Aus einem Dialog wird die Methode tabelleErzeugen() dann aufgerufen und sollte angezeigt werden, aber wie gesagt der Platz der Tabelle bleibt leer.

Liebe Grüße,
Marie
 

Marie Curie

Aktives Mitglied
Hallo zusammen,

ich versuchs noch ein Mal vllt hat ja doch jemand ein Problem.

Hab auf verschiedenste Weise versucht, Werte aus einer DB in einer Tabelle anzuzeigen. Eigentlich, rein theroetisch, kein Problem.
Das neue an der Sache: Die Spalten, die in der Tabelle angezeigt werden sollen und aus der DB abgefragt werden, werden vom Benutzer bestimmt.

Dafür werden dem Benutzer verschiedene Checkboxes zur Verfügung gestellt um die gewünschten Spalten anzuzeigen. Außerdem kann aus einer Liste ausgewählt werden, nach was speziell gesucht wird (where Bedingung in SQL Stmt).

Um den Query auf die DB durchzuführen, habe ich mittels eines StringBuilders ein SQL Stmt zusammengesetzt. Dieses ging meistens, kleine Anpassungen hier und da wären bestimmt noch nötig.

Das Ergebnis des Querys sollte in einer Tabelle in einem extra Dialog angezeigt werden. Da die Anzahl der Spalten in dieser Tabelle auch variabel ist, habe ich diese je nach ausgewählten Spalten aus einer ArrayList entnommen und einem Vector "Bezeichnungen" zugewiesen.

Der Query funktioniert, lass ich mir den Ergebnis Vector auf der Konsole ausgegeben, erhalte ich das Ergebnis. Es klappt nur partout nicht, den Ergebnis Vector der Tabelle zuzuweisen und diese anzuzeigen. Der Dialog wird zwar erzeugt, aber der Platz an dem die Tabelle schließlich sein sollte, bleibt leer!

In vorigem Code wurde ein ArrayIndexOutOfBounds Exception geworfen, aber die Tabelle wurde wenigstens angezeigt.

Der Code hat sich unwesentlich geändert, also ist der oben gepostete Code immer noch gültig. Falls vllt noch weiterer Bedarf an Code besteht, poste ich diesen gerne.

Würde mich über eure Hilfe freuen, da ich momentan kein Mittel mehr habe :autsch:

Liebe Grüße,
Marie
 

Murray

Top Contributor
Siehst du denn die Ausschreibung mit der Zeilenzahl aus der Methode tabelleErzeugen noch in der Konsole?
 

Marie Curie

Aktives Mitglied
Ja, ich habe mir die Zeilenzahl auf der Konsole ausgeben lassen. Diese stimmt mit dem Inhalt im Datenvektor überein. Also wird der Tabelle ja ein Datenwert zugewiesen.

Liebe Grüße
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
G Swing Setvisible problem AWT, Swing, JavaFX & SWT 1
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX -> fxmlLoader -> getResourceAsStream Problem AWT, Swing, JavaFX & SWT 1
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
T LayoutManager LookAndFeel-Problem AWT, Swing, JavaFX & SWT 4
F Problem mit Implementierung von Kollisionsabfrage AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
L Swing Vier Gewinnt Problem AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
Q JList Update Problem AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben