Java 如果达到某个值,如何将for循环中的布尔值设置为true?

Java 如果达到某个值,如何将for循环中的布尔值设置为true?,java,Java,如果达到2,我想在for循环内将布尔additionalLogging值设置为true。如何将其设置为括号外的“全局”或“公共”值 我只希望下一个值8是真的 有什么想法吗 public class userAnalytic { public static void main(String[] args) { boolean additionalLogging = false; System.out.println(additionalLogging);

如果达到2,我想在for循环内将布尔additionalLogging值设置为true。如何将其设置为括号外的“全局”或“公共”值

我只希望下一个值8是真的

有什么想法吗

public class userAnalytic {

    public static void main(String[] args) {
        boolean additionalLogging = false;
        System.out.println(additionalLogging);
        for (int i = 0; i <= 10; i++) {
            System.out.println(i);
            if (i == 5) {
                if (additionalLogging == true) {
                    System.out.println("We found 5");
                    if (i == 2) {
                        additionalLogging = true;
                        if (i == 8) {
                            if (additionalLogging = true) {
                                System.out.println("8 has been found");
                            }

                        }
                    }

                }

            }

        }

    }
}
公共类用户分析{
公共静态void main(字符串[]args){
布尔额外记录=false;
System.out.println(附加日志记录);

对于(int i=0;i您需要停止嵌套所有
if
条件。按照编写方式,每个内部
if
都取决于外部条件是否为真,但
i
显然不能同时为
5
2
8

此外,在测试布尔值的真值时,不需要使用
==true
,这是多余的。如果同时检查两个条件,则可以将它们与
&
运算符组合,而不是嵌套它们

如果我正确理解您的意图,您可能打算这样做:

public class userAnalytic {

    public static void main(String[] args) {
        boolean additionalLogging = false;
        System.out.println(additionalLogging);
        for (int i = 0; i <= 10; i++) {
            System.out.println(i);
            if (i == 5 && additionalLogging) {
                System.out.println("We found 5");
            }
            if (i == 2) {
                additionalLogging = true;
            }
            if (i == 8 && additionalLogging) {
                System.out.println("8 has been found");
            }
        }
    }
}
公共类用户分析{
公共静态void main(字符串[]args){
布尔额外记录=false;
System.out.println(附加日志记录);
对于(inti=0;i您的第一个if是(i==5),所有内容都在这个语句中。
您可能想这样做:

公共类用户分析{

public static void main(String[] args) {
    boolean additionalLogging = false;
    System.out.println(additionalLogging);
    for (int i = 0; i <= 10; i++) {
        System.out.println(i);
        if (i == 5) {
            if (additionalLogging == true) {
                System.out.println("We found 5");
            }
        }
        if (i == 2) {
            additionalLogging = true;
        }
        if (i == 8) {
            if (additionalLogging = true) {
                System.out.println("8 has been found");
            }
        }
    }
}
publicstaticvoidmain(字符串[]args){
布尔额外记录=false;
System.out.println(附加日志记录);

对于(int i=0;i
additionalLogging=true
你的意思是
=
?我认为你对该代码有更大的问题。请看,在每次迭代中,你检查“i”的值。如果是5,你输入if。在该if中,你检查“i”现在:在任何给定的时刻,我可以是5,2或8,但不是全部3…所以你永远不会达到if i==2的内容,因此你也不会达到if i的内容==8@AndyTurner值得一提的是,您指的是最内在的if条件。循环中唯一设置
附加日志记录的代码
to
true
位于
if
块中,该块仅在
additionalLogging
true
时输入。因此,这是一个逻辑问题,而不是语法问题;您永远不会将其设置为
true
(但单独设置内部
if(additionalLogging=true)
应该使用
=
,而不是
=
(另外:如果(x==true)
如果(x==false)
,不要使用
如果(x)
如果(!x)
[很少有例外])只要使用
如果(附加日志){
public static void main(String[] args) {
    boolean additionalLogging = false;
    System.out.println(additionalLogging);
    for (int i = 0; i <= 10; i++) {
        System.out.println(i);
        if (i == 5) {
            if (additionalLogging == true) {
                System.out.println("We found 5");
            }
        }
        if (i == 2) {
            additionalLogging = true;
        }
        if (i == 8) {
            if (additionalLogging = true) {
                System.out.println("8 has been found");
            }
        }
    }
}