Java 布尔值始终为真

Java boolean value is always true

我在使用我的学校 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',所以请调试您的代码,我相信它会帮助您找到错误所在。

如果你愿意,post这里是你的全部代码,我们会帮助你。

在您的 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);
}