2016-04-11 6 views
-1

Wenn ich versuche, rowNum = 2 und colNum = 2 in das 2d-Array übergeben, bekomme ich eine Ausnahme, wenn es falsch zurückgegeben werden soll, kann mir jemand dabei helfen?ArrayIndexOutOfBoundsException in einem 2d-Array

public boolean addPassenger(String passName, int rowNum, int colNum) { 
    boolean check = false; 
    System.out.println("row num: " + rowNum + " column num: " + colNum); 
    System.out.println("row length: " + p.length + " column length: " + p[0].length); 

    if (rowNum <= p.length && colNum <= p[0].length && rowNum >= 0 && colNum >= 0 && p[rowNum][colNum].getName().equals("")) { 

     p[rowNum][colNum] = new Passenger(passName, f); 
     check = true; 

    } else if (rowNum >= p.length || colNum >= p[0].length || !p[rowNum][colNum].getName().equals("")) { 

     check = false; 
    } else { 
     check = false; 
    } 

    return check; 
} 

Hier einige Ausgabe

   run: 
     Welcome to blank Airlines 
     Enter a flight number: 
     R62 
     Enter the number of rows: 
     2 
     Enter the number of seats per row: 
     2 
     Enter add, remove, seats, list, or quit: 
     add 
     Enter passenger name, row, and seat: 
     me 0 0 
     row num: 0 column num: 0 
     row length: 2 column length: 2 
     Passenger me was added. 
     Enter add, remove, seats, list, or quit: 
     seats 
     |   0||   1| 
     0|  me||   | 
     1|   ||   | 
     Enter add, remove, seats, list, or quit: 
     add 
     Enter passenger name, row, and seat: 
     you 2 2 
     row num: 2 column num: 2 
     row length: 2 column length: 2 
     Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 
       at csc212hw06.Plane.addPassenger(Plane.java:34) 
       at csc212hw06.Main.main(Main.java:61) 
     Java Result: 1 

ist hier die Ausnahme

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 
at csc212hw06.Plane.addPassenger(Plane.java:34) 
at csc212hw06.Main.main(Main.java:61) 
Java Result: 1 

Wenn jemand einige Vorschläge hat, würde es sehr geschätzt werden!

+1

Verwenden Sie einen Debugger, den Sie im Grunde fragen Sie uns zu tun – redFIVE

+1

Sie überprüfen 'rowNum <= p.length' und Zugriff' p [rowNum] '- was könnte das Problem dort sein? (In ähnlicher Weise für 'colNum') –

Antwort

0
if (rowNum <= p.length && colNum <= p[0].length && rowNum >= 0 && colNum >= 0 && p[rowNum][colNum].getName().equals("")) { 

Sollte rowNum < p.length && colNum < p[0].length, nicht rowNum <= p.length && colNum <= p[0].length sein. In einem n -großen Array sind gültige Indizes [0,n-1], was bedeutet, dass die Indizierung n zu Fehlern führt, die außerhalb des zulässigen Bereichs liegen.

+0

genial, dass gearbeitet hat, danke – Demuze28

Verwandte Themen