Java : Simple array with custom range of values (int)?

标签 java arrays

我有以下代码;

int minValForRange = myDataObj.getMinValue();
            int maxValForRange = myDataObj.getMaxValue();

            String[] arrOfRangesForSelection = new String[maxValForRange];

            Logger.d(String.valueOf(minValForRange));
            Logger.d(String.valueOf(maxValForRange));

            for (int i = minValForRange; i <= maxValForRange; i++) {
                arrOfRangesForSelection[i] = String.valueOf(i);
            }

minValForRange 和 maxValForRange 是动态变量(在本例中为 1 和 300),因此上面的代码会抛出异常:

 length=300; index=300

如何拥有一个从 minValueRange 索引的数组?

非常感谢您的建议。

最佳答案

How to have an array which is indexed from minValueRange please?

在 Java 中你不能。最好的选择就是根据需要进行数学计算(但我在下面提到了几个替代方案,它们实际上只是封装了它),例如:

int minValForRange = myDataObj.getMinValue();
int maxValForRange = myDataObj.getMaxValue();

String[] arrOfRangesForSelection = new String[maxValForRange - minValForRange + 1];
// Enough room for the range (inclusive) -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Logger.d(String.valueOf(minValForRange));
Logger.d(String.valueOf(maxValForRange));

for (int i = minValForRange; i <= maxValForRange; i++) {
    arrOfRangesForSelection[i - minValForRange] = String.valueOf(i);
    // The math ------------^^^^^^^^^^^^^^^^^^
}

(请注意,在上面我假设 maxValForRange 应该 被包括在内,因为这就是你编写循环的方式,这就是为什么我们在分配行中有 + 1数组。)

如果您想要 maxValForRange如果要包含在内(在编程中,我们通常包含下限,但不包含上限),则不会有 + 1在数组分配上,将使用 <而不是<=在循环中:

int minValForRange = myDataObj.getMinValue();
int maxValForRange = myDataObj.getMaxValue();

String[] arrOfRangesForSelection = new String[maxValForRange - minValForRange];
// No + 1 here --------------------------------------------------------------^

Logger.d(String.valueOf(minValForRange));
Logger.d(String.valueOf(maxValForRange));

for (int i = minValForRange; i < maxValForRange; i++) {
// Just < here ----------------^
    arrOfRangesForSelection[i - minValForRange] = String.valueOf(i);
}
<小时/>

如果你愿意,你可以简单地编写一个类来提供 getset执行必要数学运算的方法,这样您就不必在整个代码中重复它,并将数组包装在该类中。

您还可以执行 ArrayList执行必要数学运算的子类。

关于Java : Simple array with custom range of values (int)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33125367/

相关文章:

java - 如何只生成正数(见下文我的意思)

jakarta-ee - 如何在单个安装程序中为 Java EE Web 应用程序创建安装程序?

java - 在 Windows 中处理 unix 路径

java - Spring-Boot:Jmx 注释在库中不起作用

arrays - Swift 中 Array 的 removeLast() 和 popLast() 方法有什么区别?

c++ - 根据函数名称数组的索引调用函数

javascript - 将数组添加到现有的嵌套数组而不重复 mongodb

java - 使用 clojure 中的正则表达式实现简单的扫描器/分词器

python - 如何根据 Pyspark 中数组列中的值创建新列

javascript - 如何通过使用 Javascript 比较两组数组来获取唯一对象