从 ArrayList IndexOutOfBoundsException 中删除整数[重复]

2024-07-03

import java.util.Random;
import java.util.ArrayList;
public class Game {
ArrayList<Integer> numere = new ArrayList<>();
ArrayList<Bila> balls = new ArrayList<Bila>();
ArrayList<String> culori = new ArrayList<>();
Random random = new Random();
int nrBalls=0;
public void createColours(){
    for(int i=0;i<7;i++){
        culori.add("Portocaliu");
        culori.add("Rosu");
        culori.add("Albastru");
        culori.add("Verde");
        culori.add("Negru");
        culori.add("Galben");
        culori.add("Violet");
    }
}
public void createNumbers(){
    for(int i=1;i<50;i++){
        numere.add(i);
        System.out.print(numere.size());
    }
}
public void createBalls(){
    while(nrBalls<36){
        int nr =numere.get(random.nextInt(numere.size()));
        numere.remove(nr);
        String culoare =culori.get(random.nextInt(culori.size()-1));
        culori.remove(culoare);
        balls.add(new Bila(culoare,nr));
        nrBalls++;
    }
}
}

所以我有另一个带有 main 方法的类,在该类中我调用 createNumbers() 、createColours() 、createBalls() 。当我运行程序时,我在 numere.remove(nr) 处得到一个 IndexOutOfBoundsException ,说索引:数字和大小:另一个数字..总是第二个数字小于第一个数字..为什么会发生这种情况?我错在哪里?


问题是 ArrayList.remove() 有两种方法,一种是 Object,另一种是 (int index)。当您使用整数调用 .remove 时,它​​正在调用.remove(int)这会删除索引,而不是对象值。

作为对评论的回应,这里有更多信息。

线路int nr = numere.get(random.nextInt(numere.size())返回value调用返回的索引处的对象的位置。下一行numere.remove(...)尝试从 ArrayList 中删除该值。

您可以采用以下两种方法之一:

int idx = random.nextInt(numere.size());
int nr = numere.get(idx);
numere.remove(idx);

The .remove(int)方法返回remove对象的值,你也可以这样做:

int idx = random.nextInt(numere.size());
int nr = numere.remove(idx);

当然,如果需要,您可以将这两行合并为一行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ArrayList IndexOutOfBoundsException 中删除整数[重复] 的相关文章

  • 为什么Map有loadFactor而List没有呢?

    当用 Java 创建 Map 或 List 时 它们的默认初始容量都是 10 它们的容量会随着新元素的增加而增长 但是 List 仅在添加第 11 个元素时才会增长 而 Map 在添加第 8 个元素时已经增长 发生这种情况是因为 Map 有
  • 从 Java 访问 Kotlin 类对象

    我有一个 Kotlin 类 它有一个类对象 例如 public class Foo public class object public val SomeValue Int 0 如果我从 Java 使用此类 如何访问类对象内的 SomeVa
  • Java中的相似字符串比较

    我想相互比较几个字符串 并找到最相似的字符串 我想知道是否有任何库 方法或最佳实践可以返回哪些字符串与其他字符串更相似 例如 狐狸跳得很快 gt 狐狸跳了 敏捷的狐狸跳了 gt 狐狸 该比较将返回第一个比第二个更相似 我想我需要一些方法 例
  • GWT - 找不到入口点类

    我最近开始开发另一个 GWT 模块 因此 我创建了一个包 其中包含所有新类和一个实现新入口点的特定类 我将 gwt xml 修改为新的入口点 当我编译时 出现以下错误 GWT Compiling client side code WARNI
  • 在资源控制器内使用多个服务的最佳方法是什么?

    我有一个调用三个服务的控制器 public class ProductController Autowired private AccountService accountService Autowired private ProcessS
  • 如何在 Spring Batch 中从 ItemReader 访问作业参数?

    这是我的一部分job xml
  • 为什么 Stream 没有 toList() 方法?

    使用 Java 8 流时 获取一个列表 从中创建一个流 执行业务并将其转换回来是很常见的 就像是 Stream of 2 1 2 5 filter n gt n gt 0 map n gt n n collect Collectors to
  • Google Play 游戏服务 - 自定义通知/欢迎回来

    我一直在互联网上查找 但找不到我的答案 有没有办法向用户显示他们已登录 GPGS 第一次登录时 您会收到一条通知 内容为 欢迎 但是当您下次打开应用程序时 什么也没有显示 有没有办法显示欢迎回来通知 对于 iOS 这是可能的 在第 9 步上
  • 如何在javafx中嵌入PApplet?

    所以我让我的处理代码在java中运行 但现在我想将它嵌入到我的 GUI 的 JavaFX 中 我怎样才能这样做呢 我尝试使用以下代码 但它似乎不起作用 package testprocessing import javafx applica
  • 重命名由 android 10 中的应用程序创建的 Mediastore 文件。在 Android API 30 上工作,但在 API 29 中显示错误

    在这里 这个 renameFile 函数在 Android API 30 中工作 但是 它在 Android API 29 中不起作用 并显示如下错误 java lang IllegalArgumentException 不允许移动不属于明
  • 寻找关于 JIDE 的反馈 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android onBackPressed() 没有被调用?

    在我的 MainActivity 从 AppCompatActivity 扩展 中 我想重写 onBackPressed 方法 如下所示 Override public void onBackPressed Log d MainActivi
  • Jenkins 中的算法协商失败 SSH

    我正在尝试从 Jenkins ssh 到本地服务器 但抛出以下错误 SSH Exception Algorithm negotiation fail com jcraft jsch JSchException Algorithm negot
  • GWT 的图表和绘图 API

    我正在尝试找到一个可以在 GWT 中使用 java 而不是 javascript 使用的图表和绘图 api 我遇到的唯一问题是我发现需要互联网连接的代码将无法连接到互联网 有谁知道这样的API吗 这是我找到的 但又无法使用 https co
  • 使用lib添加自定义字体android

    我正在使用 android 自定义字体 lib Calligraphyhttps github com chrisjenx Calligraphy https github com chrisjenx Calligraphy 但对textv
  • 如何限制匿名子类的创建(Java)

    抱歉 我之前没有正确表述这个问题 我尝试实现工厂模式 一个更好的例子 它是一个带有 create 函数的抽象类 Human 根据创建时传递的参数 它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例 因此 您可以使用以下命令调
  • CacheStoreMode USE 和 REFRESH 有什么区别

    javadoc 为缓存存储模式 http docs oracle com javaee 6 api javax persistence CacheStoreMode html区分我无法真正理解的一点 javadoc 为USE mode 从数
  • 构建失败:程序类型已存在:com.facebook.ads.Ad

    我尝试在 Android Studio 中构建一个模块 它似乎可以在设备上运行 但是当我尝试构建 APK 时 出现错误 Program type already present com facebook ads Ad 这是完整的日志 org
  • 版本升级后异常

    使用 Optaplanner v7 11 0 Final 的项目上出现分数持久性问题 我升级到最新版本 v7 25 0 Final 但出现以下异常 The externalObject Etat super DbObject id 11 l
  • 滚动后 ListView 未显示正确的值

    在我的应用程序中我使用的是CustomListView与ArrayAdapter显示不同国家的时间 但在 6 到 7 行之后 取决于手机屏幕尺寸 时间值会重复 根据之前的一些文章 我编写了以下代码片段来获得解决方案 但问题仍然存在 以下是我

随机推荐