хранение логического значения - PullRequest
0 голосов
/ 02 января 2012

У меня проблема с тем, как изменить логическое значение данного класса, чтобы при повторном обнаружении оно имело значение последнего установленного значения.Это мой класс

public class Sandwich {
    private String type;
    private double price;
    private String ing;
    public boolean owned;

    Sandwich (String t, double p, boolean o){
        type = t;
        price = p;
        owned = o;
    }

    public boolean getO(){
        return this.owned;
    }

    public void setO(boolean o){
        this.owned = o;
    }

    public String getType(){
        return this.type;
    }
}

и место, где он доступен и должен измениться:

public void purchase(Sandwich s) {
    boolean owned = s.owned;

    //I tried also with accessor and mutator here but then changed to public
    String type = s.getType();
    if (owned == false) {
        if (money <= 0){ 
            System.out.println("Worker " + this.name + " can not buy " + type + " sandwich, cuz he doesn't have enough money");
        } else {
            System.out.println("Worker " + this.name + " can buy " + type + " sandwich");
            this.money = money;
            owned = true;

            //this is the place where it is supposed to change value to true (sandwich was bought and has owner now
            s.owned = owned;
        }
    } else if (owned == true) {
        System.out.println("Worker " + this.name + " can not buy " + type + " sandwich cuz it was bought");
        System.out.println("Test");
    }
}

Проблема в том, что хотя данный бутерброд был куплен в прошлом, его собственное значение установленоложь каждый раз, когда я пытаюсь запустить этот код.Мне нужно, чтобы сэндвич записал измененное значение собственные, чтобы в следующий раз я запустил условие == true.Как это может

Ответы [ 3 ]

3 голосов
/ 02 января 2012

Кажется, есть недостаток в вашем дизайне. Вам необходимо создать связь между Worker и типом sandwish.

Что вы можете сделать, это просто внедрить Список купленных типов сэндвичей в рабочем классе и сравнивать их с каждым, когда рабочий покупает сэндвич.

Или, если хотите, вы можете иметь хэш-карту всех типов sandwish с логическим значением, которое указывает, был ли тип уже куплен или нет.

2 голосов
/ 02 января 2012

Вы создали процедуры get и set, а затем не использовали их.Я бы изменил код на это.

    public void purchase(Sandwich s){
            String type = s.getType();
            if (!(s.getO())){
                if (money <= 0){ 
                    System.out.println("Worker " + this.name + " can not buy " + type + " sandwich, cuz he doesn't have eno

ugh money");
                } else {
                    System.out.println("Worker " + this.name + " can buy " + type + " sandwich");
                    this.money = money;
                    s.setO(true);
                }
            } else {
                System.out.println("Worker " + this.name + " can not buy " + type + " sandwich cuz it was bought");
                System.out.println("Test");
            }
     }
1 голос
/ 02 января 2012

Просто удалите

boolean owned = s.owned;

и используйте s.getO() там, где вы использовали owned

например.

if (owned == false){ 

может быть

if (!s.getO()){

И используйте метод установки s.setO(true/false), чтобы изменить его.

, например

owned = true;
s.owned = owned;

можно заменить на

s.setO(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...