越界字符串数组java

时间:2018-12-14 19:17:52

标签: java

我遇到了一个问题,我无法从ArrayList中获取元素并将其推到新的String数组中。实际上,现在我迷失了方向。超出范围接收异常,但是在通过其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;
}

1 个答案:

答案 0 :(得分:0)

因此,您正在从列表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;