Кажется, у меня есть ошибка с логическими значениями в операторах if и в removeDie У меня есть проблема с удалением одной кости, как решить эти две проблемы? - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно посмотреть, возвращают ли printCup и removeDie значение false, если чашка пуста, и удалить одну кость из массива или чашки, я пытаюсь - на removeDie, но это бесполезно, я пытался использовать, если с ==, но это дало мне ошибкуПоэтому я перешел на равных. Насчет удаления, я пытался, -1 из массива, но это не работает. Спасибо за советы по этому вопросу. Заранее спасибо.



public class IndexDie {

    public static void main(String[] args) {

        System.out.println("Skapar en tärning och skriver ut den");
        Die dice1 = new Die();
        dice1.printDie();

        System.out.println("Skapar en kopp med 3 tärningar och skriver ut koppen");
        Cup cup = new Cup(3);
        cup.printCup();

        System.out.println("lägger 2 tärningar och skriver ut koppen igen");
        cup.addDie();
        cup.addDie();
        cup.printCup();

        System.out.println("Slår alla tärningar i koppen och skriver ut koppen igen,dessutom summan");
        cup.roll();
        cup.printCup();
        System.out.println("Summan blir: " + cup.sum());

        System.out.println("Tar bort 3 tärningar i koppen och skriver ut den");
        cup.removeDie();
        cup.removeDie();
        cup.removeDie();
        cup.printCup();

        if (cup.removeDie().equals( false) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.removeDie().equals(false) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.removeDie().equals( false) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.printCup().equals( false) {
            System.out.println("error tom kopp!");
        }

    }

}
import java.util.ArrayList;

public class Cup {

    private ArrayList<Die> dice;

    public Cup(int x) {
        dice = new ArrayList<Die>();
        for (int i = 0; i < x; i++) {
            dice.add(new Die());

        }
    }

    public void addDie() {
        dice.add(new Die());

    }

    public int sum() {
        int sum = 0;
        for (int i = 0; i < dice.size(); i++) {
            sum = sum + dice.get(i).value();

        }
        return sum;
    }

    public void roll() {
        for (int p = 0; p < dice.size(); p++) {
            dice.get(p).roll();
        }

    }

    boolean ok = true;

    public void removeDie() {
        for (int x = 0; x < dice.size(); x--) {
            dice.add(new Die());
            ok = false;
        }

    }

    public void printCup() {
        System.out.println("Tärning: " + dice);
        ok = false;
    }

}
public class Die {

    private int die;



    public void roll() {
        this.die =1 + (int) (Math.random() * 6);

    }

    public int value() {
        return this.die;

    }

    public void printDie() {
        System.out.println(this.die);


    }



}

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

Ваш метод removeDie имеет тип void, это означает, что он ничего не возвращает.

Вы должны сделать что-то подобное:

public boolean removeDie() {
    boolean ok = true;
    for (int x = 0; x < dice.size(); x--) {
        dice.add(new Die());
        ok = false;
    }

    return ok;
}

, а затем

if(!cup.removeDie()){
    // ...
}
0 голосов
/ 15 октября 2019
public class IndexDie {

    public static void main(String[] args) {

        System.out.println("Skapar en tärning och skriver ut den");
        Die dice1 = new Die();
        dice1.printDie();

        System.out.println("Skapar en kopp med 3 tärningar och skriver ut koppen");
        Cup cup = new Cup(3);
        cup.printCup();

        System.out.println("lägger 2 tärningar och skriver ut koppen igen");
        cup.addDie();
        cup.addDie();
        cup.printCup();

        System.out.println("Slår alla tärningar i koppen och skriver ut koppen igen,dessutom summan");
        cup.roll();
        cup.printCup();
        System.out.println("Summan blir: " + cup.sum());

        System.out.println("Tar bort 3 tärningar i koppen och skriver ut den");
        cup.removeDie();
        cup.removeDie();
        cup.removeDie();
        cup.printCup();

        if (cup.removeDie() == (false)) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.removeDie() == (false)) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.removeDie() == (false)) {
            System.out.println("Koppen är redan tom,finns inget att ta bort");
        }
        if (cup.printCup() == (false)) {
            System.out.println("error tom kopp!");
        }

    }

}
import java.util.ArrayList;

public class Cup {

    private ArrayList<Die> dice;

    public Cup(int x) {
        dice = new ArrayList<Die>();
        for (int i = 0; i < x; i++) {
            dice.add(new Die());

        }
    }

    public void addDie() {
        dice.add(new Die());

    }

    public int sum() {
        int sum = 0;
        for (int i = 0; i < dice.size(); i++) {
            sum = sum + dice.get(i).value();

        }
        return sum;
    }

    public void roll() {
        for (int p = 0; p < dice.size(); p++) {
            dice.get(p).roll();
        }

    }

    public boolean removeDie() {
        for (int x = dice.size(); x <=1 ; x--) {
            return dice.add(new Die());
        }
        return false;
    }

    public boolean printCup() {

        System.out.println("Tärning: " + dice);
        return false;
    }

}
public class Die {

    private int die;



    public void roll() {
        this.die =1 + (int) (Math.random() * 6);

    }

    public int value() {
        return this.die;

    }

    public void printDie() {
        System.out.println(this.die);


    }



}

Если кому-то интересно, как я решил проблему, все еще нужно внести некоторые изменения, но спасибо за помощь, ребята

0 голосов
/ 15 октября 2019

Я думаю, вам нужно вернуть boolean от cup.removeDie(). Может быть, вы можете сделать так:

public boolean removeDie() {
    for (int x = 0; x < dice.size(); x--) {
        return dice.add(new Die());
    }
    return false;
}

Но я не уверен в вашей логике.

...