Java布尔值始终为true

时间:2015-05-12 17:12:25

标签: java constructor boolean

我的学校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);



}


}

2 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:0)

您可能正在使用您的选项

FunnyString w3=new FunnyString("something",true);

并且一旦你将你的布尔变量设置为true,你就可能没有重新找到它,所以它保持了真正的'值。

布尔值的默认值为' false',因此请调试您的代码,我相信它会帮助您找到错误的位置。

如果您愿意,请在此处发布您的整个代码,我们会帮助您。