Я новичок в Java, и мне нужно написать методы get() и set() для моего класса PlayingCard, и мне нужен кто-то, кто объяснит, почему я продолжаю получать сообщение об ошибке: «Фактические и формальные списки аргументов различаются по длине».

Это код, с которым мне дали работать:

 class PlayingCard
 {
      int value;
      String suit;
 }

И мне нужно написать эти методы:

  • getValue
  • получить костюм
  • SetValue
  • комплектКостюм

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

 public int getValue() {
     return value;
 }
 
 public String getSuit() {
     return suit;
 }
 
 public int setValue() {
     return value;
 }
 
 public String setSuit() {
     return suit;
 }

Я пытался следовать слайдам лекций, которые нам давали, но ничего не получалось. Как я уже говорил, я новичок в работе с Java, поэтому у меня пока нет глаз, чтобы понять, что не так.

1
Sheebs 30 Окт 2023 в 06:24
1
Кстати, если основная цель вашего класса — прозрачная передача неизменяемых данных, сделайте класс записью: record PlayingCard ( int value , String suit ) {} Компилятор неявно создает конструктор, геттеры, hashCode и equals и toString.
 – 
Basil Bourque
30 Окт 2023 в 07:50
Ожидается, что методы установки будут иметь один параметр, получающий устанавливаемое значение; и обычно они не имеют возвращаемого значения... например. public void setValue(int newValue) { ... || значение «фактических и формальных списков аргументов различаются по длине»: метод вызывается с разным количеством аргументов, как и ожидалось - в вашем случае, вероятно, установщик вызывается с ОДНИМ аргументом (например, setValue(123)), но вы заявил, что ничего не получает (public int setValue())
 – 
user85421
30 Окт 2023 в 13:50

4 ответа

Лучший ответ

void

Я тоже новичок в программировании, так что потерпите, я не думаю, что ваши методы установки должны что-то возвращать. Обычно они пусты и выглядят примерно так:

public void setSuit(String assignedSuit){
    suit = assignedSuit;
}

Этот код означает, что всякий раз, когда вы вызываете метод setSuit со строковым параметром назначенногоSuit, он может изменить переменную масти вашего объекта карты.

Я думаю, что ваши методы получения в порядке. Надеюсь это поможет.

1
Basil Bourque 30 Окт 2023 в 07:44

Методы set() не возвращаются, он должен иметь тип void. Могу ли я добавить вашу контактную информацию, я могу научить вас Java, но мой английский не очень хорош? Спасибо

   class PlayingCard
{
    int value;
    String suit;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public String getSuit() {
        return suit;
    }
   
    public void setSuit(String suit) {
        this.suit = suit;
    }
}
0
kunli 30 Окт 2023 в 08:01

Альтернативой этому будет

Добавление этого:

@Getter
@Setter

Прежде чем начать свой «публичный урок»

Например

@Getter
@Setter
public class PlayingCard
 {
      private int value;
      private String suit;
 }

Тогда вам не потребуется добавлять метод get set один за другим

Импортируя ломбок

import lombok.Getter;
import lombok.Setter;

P.S. можете попробовать добавить «частный» перед инициализацией вашей переменной

0
JeslynTan 30 Окт 2023 в 13:40

Методы получения и установки в Java используются для управления тем, как другие классы получают доступ к данным объекта и изменяют их. Они включают в себя создание частных полей класса и предоставление общедоступных методов для извлечения (получения) и обновления (установки) этих полей. Если вас не волнует наличие частной переменной, тогда нет смысла использовать методы получения и установки. Тогда вы можете просто получить доступ к переменным по записи: PlayingCard.value

class PlayingCard {

private int value;
private String suit;

public PlayingCard(int value, String suit) {
    this.value = value;
    this.suit = suit;
}

public int getValue() {
    return value;
}

public void setValue(int value) {
    this.value = value;
}

public String getSuit() {
    return suit;
}

public void setSuit(String suit) {
    this.suit = suit;
}

}

0
AdrianSt 30 Окт 2023 в 13:47