Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个方法中更改布尔值?_Java_Netbeans_Methods_Boolean - Fatal编程技术网

Java 在另一个方法中更改布尔值?

Java 在另一个方法中更改布尔值?,java,netbeans,methods,boolean,Java,Netbeans,Methods,Boolean,当我在NetBeans中使用Java8中的以下代码时,它似乎工作得不好。例如,在一种方法中,我创建了以下内容: boolean isGuessCorrect = true; 然后将其传递给另一个可以使用它的方法。然而,如果我有一些改变值的条件语句,它就不起作用了。NetBeans实际上告诉我它不能被改变。取而代之的是,我被迫使用这样的东西: int isGuessCorrect = 1; 当我使用这种方法,将1视为true,将0视为false时,我可以根据需要更改变量的值并传递它们 问题是,

当我在NetBeans中使用Java8中的以下代码时,它似乎工作得不好。例如,在一种方法中,我创建了以下内容:

boolean isGuessCorrect = true;
然后将其传递给另一个可以使用它的方法。然而,如果我有一些改变值的条件语句,它就不起作用了。NetBeans实际上告诉我它不能被改变。取而代之的是,我被迫使用这样的东西:

int isGuessCorrect = 1;
当我使用这种方法,将1视为true,将0视为false时,我可以根据需要更改变量的值并传递它们

问题是,为了可读性,我宁愿使用true/false而不是使用数字来存储true/false条件。他们有没有什么特别的地方使它不能按我想要的方式工作

编辑:这是一个非常简单的基于文本的游戏,使用方法的逻辑控制和传递变量来处理游戏中的事件

public static void main(String[] args)
{
        //Sets the game status and difficulty.
        //Using as a separate method so I don't have these variables overwritten on subsequent runs.
        int newGame = 1;
        int difficulty = 6;
        game_menu1(newGame, difficulty);        
}
以上是我目前必须使用的,然而,我最初尝试的是:

        boolean newGame = true;
这个想法是,根据游戏是否是新的,会发生不同的事情

在程序的后面部分:

        public static void game_menu2(int newGame, int difficulty, int digit1, int digit2, int choice, int counter)
{
    newGame = 0;
以上是我目前正在使用的。我将1改为0表示游戏不再是新的。然而,如果我使用

        public static void game_menu2(boolean newGame, int difficulty, int digit1, int digit2, int choice, int counter)
{
    newGame = false;
它不起作用。我很抱歉,但我必须做更多的更改,因为我在几个地方引用了它,然后才能得到确切的错误消息

编辑2:嗯。尽管我在几个小时前和昨晚遇到了问题,但在将代码更改为在需要时使用布尔变量后,我没有看到相同的错误代码。我遇到的问题很可能是一些无关的东西,一个看起来像是布尔本身的问题的bug。也有可能我以前有一个最终的操作符,而我现在没有使用它。尽管我对其他语言非常熟悉,但我仍然在课堂上学习Java

如果有人能告诉我这种类型的问题通常会发生的情况,我会接受他们的正确答案。

在Java中,参数是-或者更准确地说

对于诸如
int
double
和<代码>布尔,按值传递

因此,

public static void game_menu2(boolean newGame, int difficulty, int digit1, int digit2, int choice, int counter)
{
    newGame = false;
操作一个本地的newGame副本,该副本随函数一起消失

新游戏
(或
困难
数字1
…所做的任何更改)仅适用于本地副本,在您的方法之外不可见

该类与任何其他类一样,可以通过引用传递;不幸的是,
Boolean
是,所以你不能用它做很多事情

我会考虑在一个(可变的)类

内包装<代码> Boo.<代码> > 而是把它传给别人


但是,请注意,我可以想到在少数情况下传递
bool
引用是个好主意,而您可能不是其中之一:
如果我正确理解您的用例,我会手动更新您的标志。

因为Java通过引用传递参数,更改参数值不会更改用于将值压入该变量的变量。你至少有两种选择

  • 创建一个类成员来保存该值

  • 返回新值并在调用者方法中进行赋值


  • 不,您应该能够重新分配非最终布尔变量。你能展示一下你试过的吗?你能把完整的代码贴出来吗?我不确定我是否得到了你想要的意思…方法参数是否使用了
    final
    修饰符?我们需要看更多的代码。我不确定你在哪里声明了这两个变量,如果我们清楚的话,你的情况会更有意义。所以你说你想把一个
    布尔值
    ,一个方法中的局部变量发送到另一个方法,在那里它发生了变异。您可以尝试将
    布尔值
    包装到对象中并发送它。
    class BooleanWrapper {
        public bool value
    }