我被一件简单的事情困住了。我有一个名为“tags”的布尔值数组能够通过布尔值访问数组的每个元素对我来说很重要:
public boolean energetic, calming, happy, sad;
public boolean[] trackTags = {energetic, calming, happy, sad};
我传入trackTags数组并将布尔值赋给它(比如说[true,true,true,false])。因此,当我调用trackTags[0]时,我得到了“true”但是,当我打印“Energy”(能量)时,它应该与trackTags(0)相同,该值始终为false。我知道booleans initialize false,但当我将trackTags数组中的一些值切换为“true”时,命名元素是否也应该更改?
第二个问题:什么是与布尔变量名交互的好方法?具体来说,如果我传入一个字符串[][高兴,悲伤],然后只想切换与字符串数组中的名称对应的布尔[]值,这可行吗?在两个数组的元素之间循环没有问题,但我显然无法将字符串与布尔值进行比较。
总而言之,有没有更好的方法来与布尔名称交互?对此我真的很困惑。
使用Map的替代方法是定义一组单独的枚举。
enum tagNames = {energetic, calming, happy, sad};
boolean tags[] = new boolean[4];
然后,您可以修改当前的布尔数组,就像普通数组一样:
for(int i = 0; i < tags.length; i++){
if (tags[i] == 1)
trackTags[i] = true;
}
但您也可以使用枚举查找特定值:
tags[tagNames.energetic.ordinal()] //returns boolean value at [0]
*我想补充一点,由于可定制性问题,这种方法可能不可取。例如,如果希望枚举引用另一个数组中偏移量为0的元素。
我传入并为trackTags数组指定布尔值。然而,当我打印“Energy”时,值总是错误的。我知道booleans initialize false,但当我将trackTags数组中的一些值切换为“true”时,命名元素是否也应该更改?
否。布尔值是一种基本类型,因此您没有存储布尔值的引用,而是直接存储布尔值。
对我来说,与布尔变量名交互的好方法是什么?
您不能按名称获取变量,甚至不能使用反射(不要将变量与类的字段混淆)。使用贴图
听起来更像是您想要类似Map
的东西。这将允许您通过将名称作为key
映射到value
来有效地命名值。
实例
Map<String, Boolean> trackTags = new HashMap<String, Boolean>();
trackTags.put("energetic", false);
注意事项
为了提高代码的可读性,我还将名称放在一些最后的字段中。。
public static final String ENERGETIC = "energetic";
然后像这样访问。。
trackTags.get(ENERGETIC);
这样,如果你需要更改名称,可以在一个地方更改,而不是在整个节目中更改。
没有好的方法来转换给定的数组成流在Java-8在一个语句,或者我错过了什么? <罢工> 提示:<代码>数组。流(foo)将不起作用,对于布尔[]类型,没有这样的方法。
问题内容: 作为一个相当环保的Java程序员,我给自己设定了尝试编写简单文本冒险的艰巨挑战。毫不奇怪,我已经遇到了困难! 我试图给我的Location类一个属性来存储退出包含的属性。我为此使用了一个布尔数组,以实质上保存代表每个出口的true / false值。我并不完全相信 a) 这是最有效的方法,并且 b) 我正在使用正确的代码填充数组。 我希望收到所有反馈,即使是对完整的代码进行大修! 目前
作为一个相当环保的Java程序员,我给自己设定了一个巨大的挑战,试图编写一个简单的文本冒险。不出所料,我已经遇到了困难! 我正在尝试为我的 Location 类提供一个属性来存储它包含的出口。为此,我使用了一个布尔数组,基本上保存表示每个出口的真/假值。我不完全相信 a) 这是最有效的方法 b)我正在使用正确的代码来填充数组。 我将感谢任何和所有的反馈,即使是一个完整的代码超载! 目前,在实例化位
问题内容: 我有这个代码 有人可以告诉我我在这里到底在做什么错,我该如何纠正?我只需要将所有数组元素初始化为布尔型false。谢谢 问题答案: 我只需要将所有数组元素初始化为布尔型false。 请改用任一方法,以便所有值默认为: 或者 使用填充整个数组: 另请注意,数组索引基于零。该行如你有会导致。要了解有关Java中数组的更多信息,请查阅此基本Oracle教程。
我注意到java有一个问题。它不能解析空值的布尔类。我知道它有静态方法,但它的签名声明它只接受,而不接受。 换句话说,它有以下签名: 但不是: 检查布尔值而不陷入NullPointerException的最佳方法是什么?
问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)