当前位置: 首页 > 知识库问答 >
问题:

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

晋功
2023-03-14

这是我的代码:

//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。

此外,我有月食氧气,所以也许这就是问题所在。

共有2个答案

凌鹏程
2023-03-14

您没有向数组列表id添加任何内容(列表id为空)。这就是为什么在尝试获取元素时会出现这个异常。所以在访问一个特定的元素之前,确保它是可用的。所以围在线下

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

如下:

if(!ids.isEmpty() && proveraID<ids.size()){
        String ispisID = (String) ids.get(proveraID);
    }
郭建华
2023-03-14

在最大的其他地方,您可以阅读变量id,但它可能没有任何内容。

 类似资料:
  • 我已经看了关于这个主题的其他StackOverflow问题,但是作为一个新开发人员,我非常困惑。我试图写一个程序,问用户谜语,并在用户得到一个特定谜语的三个错误答案后重新启动。需要重新启动的代码是: 我需要重新启动的代码应该位于restartApp()当前所在的位置。提前谢谢!

  • 问题内容: 我想逐行调试Java程序的整个流程,而我正在使用eclipse,我该怎么做? 问题答案: 在Eclipse中调试Java程序需要执行多个步骤,例如: 设置断点 启动调试器 控制程序执行。 对于逐行使用F6和F5进入方法 评估变量等 将所有内容放在此处会使答案过长。我建议您遵循本教程: http://www.vogella.com/articles/EclipseDebugging/ar

  • (我是java BTW的新手!)

  • 我想调试一个Vaadin8应用程序,当我启动Gradle-Task“Vaadinrun”时,控制台会告诉我调试端口: 运行在http://localhost:8080上的应用程序(调试器在8000上) 有效的方法是将远程调试会话附加到端口8000,但奇怪的是,一定有更简单的方法。问题是怎么做? 智能点子:2017.2.5 分级:4.2.1 Gradle-Vaadin支持:com.devsoap.p

  • 问题内容: 我知道如何使用Eclipse调试远程Java VM,但是如何使用Java Web Start程序进行调试。我有一个仅在Java Web Start中出现的问题。它必须与安全性相关。 我需要一个可以与当前Java VM(如1.6.0_12)一起使用的解决方案。 问题答案: 与要远程调试的任何其他Java进程完全相同:您必须为VM()设置一些参数,然后连接到给定的端口。在Java Webs

  • 我想在intellij Idea中以调试模式启动spring-boot maven应用程序,但当我创建断点时,应用程序不会挂起,而是会继续。我读了很多题目,但还是不明白怎么做。你能帮我决定最好的行动方案吗。 但是当请求LocalHost:5005/MyPage时,我会出现错误101(NET::ERR_CONNECTION_RESET)。似乎有些maven参数没有指定。 下面是我在pom.xml中的