Неисправность вызывающего конструктора с входными параметрами из main - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь поиграть с Java и создать небольшую игру в покер, используя объектно-ориентированные принципы. Однако я сталкиваюсь с проблемой вызова конструктора из main.

class Card
{
    private char face;
    private char suit;

    Card(char face, char suit)
    {
      this.face = face;
      this.suit = suit;
    }

    @Override
    public String toString()
    {
      return Character.toString(face) + Character.toString(suit);
    }
}

public static void main(String[] args)
{
    Card oneCardHand = new Card('A', 'c');

    System.out.println("Made it this far");
    System.out.println(oneCardHand);
}

Я получаю следующую ошибку:

non-stati c переменная, на которую нельзя сослаться из stati c context

Так что мне кажется, что я либо упускаю глупую синтаксическую вещь, либо, скорее всего, не понимаю ключевую информацию о переменных * stati c и non-stati c.

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Класс Card объявлен как внутренний класс экземпляра. Либо:

  • Преобразовать его в внутренний класс c:
static class Card
  • Или создать экземпляр внешнего класса, чтобы получить экземпляр внутренний класс (при условии, что внешний класс называется Outer):
Outer.Card oneCardHand = new Outer().new Card('A', 'c');
  • Или переместите метод main внутри класса Card.

  • Или переместите класс Card в отдельный исходный файл (Card.java), который обычно является предпочтительным подходом.


Подробнее о вложенных классах:

0 голосов
/ 13 марта 2020

Вы можете создать отдельные классы в. java файлах

  • publi c class Application в Application. java с основным методом там
  • publi c Карта класса в Карте. java

Вы также можете сделать отдельные пакеты, но это, вероятно, на потом ...

...