Java布尔值始终为true

Java布尔值始终为true,java,constructor,boolean,Java,Constructor,Boolean,我在学校的Java代码中遇到了问题——我试图创建一个接受布尔值的构造函数,然后在以后使用它,但出于某种原因,它总是正确的。谁能告诉我我做错了什么 编辑:我发布了我的全部代码,我认为稍微修改一下会让我的问题更清楚,但这似乎只会造成混乱 import java.util.*; public class L3_Z6 { public static void main(String[] args) { // TODO Auto-generated method stub

我在学校的Java代码中遇到了问题——我试图创建一个接受布尔值的构造函数,然后在以后使用它,但出于某种原因,它总是正确的。谁能告诉我我做错了什么

编辑:我发布了我的全部代码,我认为稍微修改一下会让我的问题更清楚,但这似乎只会造成混乱

        import java.util.*;
public class L3_Z6 {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    class FunnyString{
        private boolean ascii;
        private String slowo;
        private char separator;


        public FunnyString (String slowo, char separator, boolean ascii){
            this.slowo=slowo;
            this.separator=separator;
            this.ascii=ascii;

        }
        public FunnyString (String slowo, char separator){
            this(slowo, separator, false);
        }
        public FunnyString (String slowo, boolean ascii){
            this(slowo,'-', ascii);
        }
        public FunnyString (String slowo){
            this(slowo,'-', false);
        }
        public void setAscii (boolean a){
            ascii=a;
        }
        public void setChar (char b){
            separator=b;
        }

        public String toString (){

            int dlugosc = slowo.length();
            int licznik = 0;
            String wynik="";
            do{
                if(ascii=false){
                wynik+=slowo.charAt(licznik);
                }
                if(ascii=true){
                    wynik+=(int)slowo.charAt(licznik);
                }
                if(licznik!=dlugosc-1)
                    wynik+=separator;
                licznik++;
            }while (licznik!=dlugosc);
            wynik+="\n";

            return wynik;
        }
    }
          FunnyString w1=new FunnyString("Kaktus");
          FunnyString w2=new FunnyString("Eukaliptus",'*');  
          FunnyString w3=new FunnyString("Yuka",true);

          System.out.println(w1);

          System.out.println(w2);

          System.out.println(w3);

          w1.setAscii(true);
          w1.setChar('*');
          System.out.println(w1);

          w3.setAscii(false);
          w3.setChar('!');
          System.out.println(w3);



}


}

您可能正在使用您的选项

FunnyString w3=new FunnyString("something",true);
一旦您将布尔变量设置为true,您可能不会重新评估它,因此它会保留“true”值

布尔值的默认值为“false”,所以调试代码时,我相信它会帮助您找到错误所在


如果您愿意,请在此处发布您的全部代码,我们将为您提供帮助。

在您的
If
条件中,您使用的是赋值而不是比较

改变这个

if(ascii=false){
    wynik+=slowo.charAt(licznik);
}
if(ascii=true){
    wynik+=(int)slowo.charAt(licznik);
}
对此

if(ascii==false){
    wynik+=slowo.charAt(licznik);
}
if(ascii==true){
    wynik+=(int)slowo.charAt(licznik);
}

您如何确认
ascii
始终正确?还有,什么是
slowo
?这是不完整的代码。您希望我们如何解决代码不完整的问题?请稍后显示我们不知道您如何打印的
部分。我在实际使用所有这些值的地方剪切了部分。如果我只是创建一个If(ascii=true){System.out.println(“它是真的”),它总是会打印出那个字符串。现在我觉得很傻,但它可以工作了。谢谢Toumash!