Установить список истинных значений - PullRequest
0 голосов
/ 12 мая 2018

Так что я все еще изучаю классы, и я пытаюсь понять, как использовать логические массивы. У меня есть класс игры в кости, и я хочу создать другой класс, который проверяет все 1-6 чисел один раз. Например, игра в кости прекращает бросать, когда 1-6 бросил один раз. Возникли проблемы при попытке присвоить кости getfaceValue и setValue как true, поэтому номера вхождений отбрасываются. Также я хочу проверить класс BooleanArray для другого нового класса, так что всего 3 класса. Спасибо!

import java.util.*;

public class BooleanArray {
    public static void main(String args[]){
        Die dice;

        boolean b[];

        b = new boolean[7];
        //ASSIGNING ELEMENTS TO BOOLEAN ARRAY
        b[0] = true;
        b[1] = false;
        b[2] = false;
        b[3] = false;
        b[4] = false;
        b[5] = false;
        b[6] = false;


        dice = new Die();

        dice.roll();
        if (dice.getFaceValue() == b[1]) {
            b[1] = true;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Как я понимаю, вам нужно 3 класса: один с методом main (начальный), класс логического массива и класс Dice.

Во-первых, давайте создадим класс Boolean Array.Он будет содержать ваш массив "b" и будет проверять, что все значения становятся истинными:

class BooleanArray {
  boolean b[] = {true, false, false, false, false, false, false};

  // sets value=true to array index from 1 to 6
  void setTrueToIndex(int index){

      // outputs every dice rolled value
      System.out.println(index);

      if(index > 0 && index<b.length){
          b[index] = true;
      }
  }

  // checks that Dice rolled to values 1-6 minimum one time
  boolean checkThatAllTrue(){
      for (boolean value : b) {
          if(value == false){ // possible short-hand if(!value)
              return false;
          }
      }
      return true;
  }
}

Итак, ваш начальный класс может быть переписан как:

public class DiceGame {
  public static void main(String args[]){
      Die dice = new Die();

      BooleanArray booleanArray = new BooleanArray();

      // counter for dice rolling
      int howManyTimesDiceRolled = 0;

      // we will roll dice until all values will be true
      while(!booleanArray.checkThatAllTrue()){
          int roll = dice.roll();
          howManyTimesDiceRolled++;
          booleanArray.setTrueToIndex(roll);
      }
      System.out.println("Dice rolled: " + howManyTimesDiceRolled);
  }
}

Пример вывода:

Dice number: 4
Dice number: 2
Dice number: 2
Dice number: 2
Dice number: 3
Dice number: 5
Dice number: 4
Dice number: 4
Dice number: 3
Dice number: 6
Dice number: 5
Dice number: 6
Dice number: 1
Dice rolled: 13

Итак, в моей системе Dice бросил 13 раз, прежде чем все значения массива стали истинными.

0 голосов
/ 12 мая 2018
if (dice.getFaceValue() == int b[1]) {

Это синтаксическая ошибка. Слово int не должно присутствовать. Вы пытались сыграть? Если да, то синтаксис (int) b[1], но логическое значение не может быть приведено к целому числу.

Если вы полностью удалите int, вы попытаетесь сравнить целое число с левой стороны с логическим значением с правой стороны, что невозможно.

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