Java 使移位字符串为布尔值?

Java 使移位字符串为布尔值?,java,Java,我试图为我正在创建的项目创建一种设置系统,但是我遇到了一些问题。我试图使用字符串(考虑到这些设置以后必须保存到文本文件)作为makeshift布尔值。所以,我需要能够在true和false之间切换这个字符串。我假设下面的方法会起作用,但出于某种原因,它总是设置为true。据我所知,这是代码中唯一设置变量的地方 我不知道为什么下面的代码不应该工作,我已经做了彻底的搜索,但没有结果 if("true".equals(settings[0])) settings[0] = "false";

我试图为我正在创建的项目创建一种设置系统,但是我遇到了一些问题。我试图使用字符串(考虑到这些设置以后必须保存到文本文件)作为makeshift布尔值。所以,我需要能够在true和false之间切换这个字符串。我假设下面的方法会起作用,但出于某种原因,它总是设置为true。据我所知,这是代码中唯一设置变量的地方

我不知道为什么下面的代码不应该工作,我已经做了彻底的搜索,但没有结果

if("true".equals(settings[0])) 
   settings[0] = "false";             //This is *always* skipped
else if("false".equals(settings[0])) 
   settings[0] = "true";`

因此,我来到这里。

将字符串转换为布尔值并反转结果。样品

String[] settings = {"tRue"};
boolean settingBool = !Boolean.parseBoolean(settings[0]);
System.out.println(settingBool);
输出:

false

一个更好的方法是首先使用布尔值,并且仅在需要时将其转换为字符串并返回

正如JB Nizet在其评论中所写,这将使代码更具可读性和健壮性。 在您的情况下,这意味着保留布尔值而不是字符串:

public static Boolean[] settings = new Boolean[] { Boolean.FALSE, Boolean.TRUE,
                                                  Boolean.TRUE, BOOLEAN.FALSE };
要切换布尔值,请使用

settings[0] = !settings[0];

要转换为字符串以保存设置,请使用
Boolean#toString
,从设置中读取
Boolean#valueOf(string)

总结注释:

您是否检查了[0]实际包含的设置

是的,默认情况下它等于“false”

设置[0]是否在其他地方更改

没有


如果设置[0]为false,则期望始终跳过If语句的第一个分支。

当某些数据是布尔值时,应使用布尔值。保存为字符串时,将此布尔值转换为字符串。加载后,将字符串转换为布尔值。如果遵循此规则,您的代码将更可读、更高效、更健壮。您是否检查了
设置[0]
实际包含的内容?这是编译器的亮点:)我同意@JBNizet。使用
Boolean#toString
转换为字符串,使用
Boolean#valueOf
从字符串中获取布尔值。@NukeDuck设置[0]的部分我应该仔细听前面的注释,因为它当然是,将字符串从布尔值和转换为布尔值更容易、更健壮,从而使此过程更容易。我感谢大家的帮助!谢谢,这样做,而不是我原来的,相当混乱的方法似乎已经奏效。我不知道为什么,但这是一个解决办法。