2017-05-18 2 views
0

Ich versuche, den Inhalt eines Arrays, um zu sehen, aber wenn ich es laufen kommt eine FehlermeldungException in thread „main“ java.lang.ArrayIndexOutOfBoundsException: 101

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 101 

Weiß jemand, wo das Problem ist, ? hier ist mein Code:

public final class KonversiQtoH extends DebitDiberikan{ 

public KonversiQtoH() throws SQLException{ 
    QBeriPintu1(); 
} 
Connection c = KoneksiDatabase.getKoneksi(); 
Float[] fine; 
public void QBeriPintu1() throws SQLException{ 
    try{ 
     List rowValues = new ArrayList(); 
     Statement s = c.createStatement(); 
     String sql = "SELECT LA40 from tabel_debit"; 
     ResultSet rs = s.executeQuery(sql); 
     while (rs.next()){ 
      rowValues.add(rs.getFloat("LA40")); 
     } 
     rs.close(); 
     s.close(); 
     fine = (Float[]) rowValues.toArray(new Float[rowValues.size()]); 
    }catch(SQLException e){ 
     System.err.println("QKanan, error"); 
    } 
} 
public static void main(String[] args) throws SQLException{ 
    KonversiQtoH j = new KonversiQtoH(); 
    j.QBeriPintu1(); 
    for (int i=0; i<=j.fine.length; i++){ 
     int a = i+1; 
     System.out.println(a+". "+j.fine[i]); 
    } 
} 
} 
+0

scheint entfernen ein Duplikat von http: // zu sein Stackoverflow. com/q/5554734/754550 – miracle173

+0

überprüfen Sie Ihre 'main' Methode in der Schleife, die Sie' <= 'verwendet haben, was bedeutet, dass die Länge des Arrays größer als gleich ist. aber index ist zugänglich für 'length-1' –

+2

Mögliches Duplikat von [Was verursacht eine java.lang.ArrayIndexOutOfBoundsException und wie verhindere ich sie?] (http://stackoverflow.com/questions/5554734/what-causes-a- java-lang-arrayindexoutofboundexception-and-how-do-i-prevent-it) –

Antwort

1

Dies scheint der problematischen Code zu sein:

for (int i=0; i <= j.fine.length; i++) { 
    int a = i+1; 
    System.out.println(a+". "+j.fine[i]); 
} 

Arrays in Java von Null auf die Länge indiziert sind minus eins. Die obige Schleife versucht tatsächlich, auf einen über die Länge des Arrays hinaus zuzugreifen. die Grenzen Festsetzung dieser Fehler loswerden sollte:

for (int i=0; i < j.fine.length; i++){ 
    int a = i+1; 
    System.out.println(a+". "+j.fine[i]); 
} 
1

ändern

for (int i=0; i<=j.fine.length; i++){ 
     int a = i+1; 
     System.out.println(a+". "+j.fine[i]); 
    } 

zu

for (int i=0; i<j.fine.length; i++){ 
     int a = i+1; 
     System.out.println(a+". "+j.fine[i]); 
    } 

Vergleich opera von < = zu <

2

Die folgende Zeile erzeugt Fehler :

for (int i=0; i<=j.fine.length; i++) { 

Ersetzen durch:

for (int i=0; i<j.fine.length; i++) { 
+1

es ist Arbeit, danke – adjieq

1

Sie sollten die "=" i < = j.fine.length

for (int i=0; i<j.fine.length; i++){ 
    int a = i+1; 
    System.out.println(a+". "+j.fine[i]); 
} 
Verwandte Themen