Получение определенного c параметра из конструктора Java - PullRequest
0 голосов
/ 12 июля 2020

Я создаю простую игру, используя карты из колоды карт в качестве очков. Пока что я создал колоду карт и успешно ее распечатал. Программа состоит из 2 классов: Game (который содержит основной метод) и Card (который создает карты). Я пытаюсь создать метод (метод называется Points ), который возвращает общее количество номеров каждой карты, но я не знаю, как извлечь значение карты из остальной части объекта. Есть ли какая-то колода для извлечения этого параметра c?

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

Ниже представлена ​​сокращенная версия моей работы.

Карточка. java

class Card {
  private final String name;
  private final Integer value;

  Card (String name, int value) {
    this.name = name;
    this.value = value;
  }

  public String getName () { return name; }
  public String getValue () { return value; }

  public String toString() { return (this.name + " = " + this.value); }
}

Игра. java

public class Game {
  public static void createDeck (ArrayList<Card> deck) {
    for (int i = 0; i < 10; i ++) { //creates cards 0 - 10
      Card obj = new Card("Card", i);
      deck.add(obj);
    }

  public static Int Points (ArrayList<Card> deck) {} //should return 81 = 0 + 1 + 2 + 3 + ...

  public static void main (String [] args) {
    ArrayList<Card> deck = new ArrayList<Card>();
    createDeck(deck);
    Points(deck);
}

Ответы [ 2 ]

0 голосов
/ 12 июля 2020
private class Card{
    private Integer value;
    private String name;
    
    public Card(Integer value, String name) {
        this.value = value;
        this.name = name;
    }

    Integer getValue() {
        return this.value;
    }
}

public static int points(ArrayList<Card> cards) {
    return cards.stream().mapToInt(c -> c.getValue()).sum();
}
0 голосов
/ 12 июля 2020

Есть одна проблема в классе Card. Тип возврата getValue должен быть Integer, а не String

public String getValue () { return value; }

должно быть

public Integer getValue () { return value; }

Вот как вы можете написать метод точек:

public static Integer points (ArrayList<Card> deck) {
        Integer total =0;
        for (int i = 0; i < deck.size();i++) { 
          total+=deck.get(i).getValue();
        }
    return total;
}
...