我想将布尔数组中的所有值设置为 false 而不重新初始化它
Posted
技术标签:
【中文标题】我想将布尔数组中的所有值设置为 false 而不重新初始化它【英文标题】:I'd like to set all the values in a boolean array to false without re-initializing it 【发布时间】:2012-05-16 13:41:34 【问题描述】: public boolean used[] = new boolean[26];
这就是我所拥有的,而且效果很好。我知道默认情况下它们都将设置为 false。但是,由于我的应用程序使用了一段时间,其中一些更改为“true”。 (这很好,因为这是我的代码应该做的)。
我正在尝试创建一个“重置”按钮,它将模拟类似重置的操作。所有变量都恢复到最初创建窗口时的状态(所有绘图都消失了 - 只需重新启动)。
我需要所有这些真正的布尔值一举恢复为假。有什么想法吗?
【问题讨论】:
【参考方案1】:使用Arrays.fill
:
Arrays.fill(used, false);
【讨论】:
【参考方案2】:Arrays.fill 在填充数组之前使用 rangecheck。
public static void fill(Object[] a, int fromIndex, int toIndex, Object val)
rangeCheck(a.length, fromIndex, toIndex);
for (int i=fromIndex; i<toIndex; i++)
a[i] = val;
/**
* Check that fromIndex and toIndex are in range, and throw an
* appropriate exception if they aren't.
*/
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex)
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
如果你不需要 rangeCheck,你可以使用 forloop 来填充你的布尔数组。
for(int i = 0; i < used.length; ++i)
used[i] = false;
【讨论】:
这个来源是哪里来的?我们需要归因它/链接吗? @Chris:它是 java 源代码,我使用 maven,我们可以说下载源代码和 javadoc 以及二进制文件。只需遵循 Arrays.fill 所做的( F3 快捷方式),代码就在那里。我从那里复制并粘贴了它。或者你可以去 jarvana 搜索一下。 您的来源的许可是否允许在不注明出处的情况下将其粘贴到此处? @Chris Java 是开源的,您可以在线查看他们的代码并将其用于非商业分发。 @Chris Sun 还为研究人员和其他有兴趣探索 JDK 细节的人提供了 JDK 源代码。在过去几年中,Sun 已通过 Sun 社区源代码许可 (SCSL) 条款提供源代码。 Sun 继续将 SCSL 用于 JDK 5.0。此外,Sun 还在新的 Java 研究许可证 (JRL) 下发布 JDK 5.0,该许可证简化了对 JDK 5.0 源代码的访问。与 SCSL 相比,研究人员和大学应该会发现 JRL 更容易理解和使用。来源:java.sun.com/j2se/1.5.0/source_license.html【参考方案3】:你可以重新创建你的数组,它会默认初始化为 false。
那就是当你实施重置时你可以做的
used[] = new boolean[26];
【讨论】:
【参考方案4】:使用java.util.Arrays.fill()
:
Arrays.fill(used, false);
【讨论】:
【参考方案5】: boolean a[]= new boolean[nums.length];
Arrays.fill(a, false);
// 这将帮助您用 false 填充布尔数组。
// 记得 -> import java.util.Arrays;
【讨论】:
以上是关于我想将布尔数组中的所有值设置为 false 而不重新初始化它的主要内容,如果未能解决你的问题,请参考以下文章