如何在Java程序中调试“java.lang.IndexOutOfBoundsException”?

时间:2017-07-24 10:27:14

标签: java

这是我的代码:

//import java.awt.List;
import java.util.ArrayList;
//import java.util.LinkedList;
import java.util.Scanner;
public class Unos {

public static void main(String[] args) {
  boolean run = true;
//String ispisID;
  int proveraID;
  int broj = 0;
  int brojT = 0;
  String id;
  String provera2;
  String provera3;
  String ime;
  String prezime;
  String godina;
  String mesec;
  String dan;

  while(run) {

  brojT  = broj;
  ArrayList<String> imena = new ArrayList<String>();
  ArrayList<String> prezimena = new ArrayList<String>();
  ArrayList<String> godine = new ArrayList<String>();
  ArrayList<String> meseci = new ArrayList<String>();
  ArrayList<String> dani = new ArrayList<String>();
  ArrayList<String> ids = new ArrayList<String>();
//char pocetak='s';
  System.out.println("Za pocetak pritisnuti s, za pretagu pritisnuti p");
  Scanner input = new Scanner(System.in);
  String provera = input.nextLine();
  if(provera.equals("s")) {
      System.out.println("Unesite ime");
      ime = input.nextLine();
      System.out.println("Unesite prezime");
      prezime = input.nextLine();
      System.out.println("Unesite godinu rodjenja");
      godina = input.nextLine();
      System.out.println("Unesite mesec");
      mesec = input.nextLine();
      System.out.println("Unesite dan");
      dan = input.nextLine();
      System.out.println("Da li je profil dobro unet?");
     // brojT++;
      System.out.println("ID: " + brojT);
      System.out.println(ime + " " + prezime );
      System.out.println(dan + "/" + mesec + "/" + godina);
      System.out.println("T= tacno, N= netacno");
      provera2 = input.nextLine();
      if(provera2.equals("t")) {
          broj = brojT;
          imena.add(ime);
          prezimena.add(prezime);
          godine.add(godina);
          meseci.add(mesec);
          dani.add(dan);
          System.out.println("Memorisano u bazu, za prikaz pritisnuti p, na ponovno unosenje s");
          provera3 = input.nextLine();
          switch(provera3) {
          case "p":
              System.out.println(ime + " " + prezime );
              System.out.println(dan + "/" + mesec + "/" + godina);
          break;
          case "s":

          break;
          }
      } else {
          System.out.println("Nije memorisano");
          brojT--;
      }
  } else if(provera.equals("p")) {
      System.out.println("Unesite id");
      proveraID = input.nextInt();
      String ispisID = (String) ids.get(proveraID);
      System.out.println(ispisID);



  }
}
}
}

这是错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0,          Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Unos.main(Unos.java:78)

感谢您的帮助,我是Java的新手。

我也有Eclipse Oxygen所以也许这就是问题所在。

2 个答案:

答案 0 :(得分:0)

在最大的其他内容中,您读取了变量ID,但它可能没有任何内容。

答案 1 :(得分:0)

您没有向Arraylist ids 添加任何内容(列表ID为空)。 这就是为什么在尝试获取元素时会遇到此异常。 因此,在访问特定元素之前,请确保其可用。 所以请在行下方

String ispisID = (String) ids.get(proveraID);

如下:

if(!ids.isEmpty() && proveraID<ids.size()){
        String ispisID = (String) ids.get(proveraID);
    }