2015-05-12 2 views
-1

У меня проблемы с моим школьным кодом Java. Я пытаюсь создать конструктор, который принимает логическое значение, а затем использует его позже, но по какой-то причине он всегда прав. Может ли кто-нибудь сказать мне, что я делаю неправильно?Java-логическое значение всегда верно

EDIT: я отправляю весь свой код, я думал, что его изменение немного сделает мою проблему более ясной, но похоже, что это создало путаницу.

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



} 


} 
+3

Как вы подтверждаете, что 'ascii' всегда верно? Кроме того, что такое 'slowo'? Это неполный код. Как вы ожидаете, что мы разрешим проблему с неполным кодом? – CKing

+1

показать «более позднюю» часть, которую мы не знаем, как вы пытались напечатать? – silentprogrammer

+3

[MCVE] (http://stackoverflow.com/help/mcve), пожалуйста. – dcsohl

ответ

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

Вы можете использовать ваш вариант

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

и после того как вы установите булево переменную так, вы можете быть повторно не sseting, поэтому он сохраняет «истинное» значение.

Значение по умолчанию для boolean равно 'false', поэтому отлаживайте свой код, я уверен, что он поможет вам найти, где ваша ошибка.

Если вы хотите, разместите здесь весь ваш код, и мы поможем вам.

Смежные вопросы