java - java字符串数组越界

标签 java

我面临一个问题,我无法从 ArrayList 中获取元素并将它们推送到我的新字符串数组中。其实我现在感觉很失落。收到越界异常,但通过 id 检查打印元素后一切正常?顺便说一句,我的 darbuotojuArray 看起来像这样:

Programuotojas: X X 1 X

这是我的代码:

public String[] renkantDarbuotojus() {
    String[] darbuotojaiIKomanda = new String[2];
    if (darbuotojuArray.size() == 0) {
        System.out.println("Nera darbuotoju kuriuos butu galima prideti i komanda.");
        System.out.println("Pridekite nauju darbuotoju");
        meniu.valdiklis();
    } else {
        for (int i = 0; i < darbuotojuArray.size(); i++) {
            System.out.println("ID: " + i + " " + darbuotojuArray.get(i));
        }
        System.out.println("Pasirinkite pirmaji darbuotoja pagal ID");
        Scanner SI = new Scanner(System.in);
        int userSelects = Integer.parseInt(SI.nextLine());
        darbuotojaiIKomanda[0] = String.valueOf(darbuotojuArray.get(userSelects));
        darbuotojuArray.remove(userSelects);
        System.out.println("Pasirinkite antraji darbuotoja pagal ID");
        int userSelects2 = Integer.parseInt(SI.nextLine());
        darbuotojaiIKomanda[1] = String.valueOf(darbuotojuArray.get(userSelects2));
        darbuotojuArray.remove(userSelects2);
    }
    return darbuotojaiIKomanda;
}

最佳答案

因此,您将从列表中删除一个项目darbuotojuArray.remove(userSelects);,这将更改所有 ID。您要么需要再次打印列表,以便用户可以选择正确的 ID,要么您可以执行以下操作:

 int userSelects2 = Integer.parseInt(SI.nextLine());
 if(userSelects2 == userSelects)
      System.out.println("Error, ID has been removed");  
 else if(userSelects2 > userSelects)
      userSelects2 = userSelects2 -1;

关于java - java字符串数组越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53785682/

相关文章:

java - 如何将 2 个服务器作为单独的进程运行?

java - 在 libgdx java 中运行时旋转粒子

java - 带 null 参数的 Spring Boot 原生查询

java - 在 PictureTaken(byte[] data) 上解释来自 Android Camera 的原始图像数据

java - 序列化和反序列化 - 套接字编程

java - 我有 "fixed"内存泄漏,但是..如何以更好的方式修复它?

java - 错误:找不到com.android.tools.build:gradle:3.5.3

java - JSP - scriptlet 有什么问题,以及应该使用什么

java - IntelliJ 中的文档记录速度慢(不快)?

java - 从数据库转换为 Java 变量时使用的命名约定