2016-09-09 4 views
-1

В моем классе мы работаем над программой java, которая создает «карты» с номиналом и костюмом. Он использует два файла, один из которых является бегуном, а один - классом. Однако я был в шоке от серии ошибок в моем коде, которые я не могу понять, как избавиться.Справка по Java: как исправить эту ошибку?

Это мой код класса карты:

public class Card 
{ 
    public static final String FACES[] = {"ZERO","ACE","TWO","THREE","FOUR", 
      "FIVE","SIX","SEVEN","EIGHT","NINE","TEN","JACK","QUEEN","KING"}; 

     private String suit; 
     private int face; 

     public Card() 
     { 
      face = 0; 
      suit = "CLUBS"; 
     } 
     //set methods 
     public Card(String str1, int int1) 
     { 
      face = int1; 
      suit = str1; 
     } 

    public int getFace() 
    { 
     return face; 
    } 

    public String getSuit() 
    { 
     return suit; 
    } 
    public Void setFace(int face) 
    { 
     face = face; 
     return face; 
    } 
    public Void setSuit(String suit) 
    { 
     suit = suit; 
     return suit; 
    } 

    public String toString() 
    { 
     return FACES[face] + " of " + suit; 
    } 
} 

Та часть, которая дает мне выдает это setSuit() и setFace().

до этого я попытался This.suit или This.face, и это дало мне возвратить ошибку просит меня вернуться (что, конечно, не работает)

это текущая настройка дает мне ошибку о том, что она не может конвертировать в пустоту.

Я чувствую, что это так просто, но я новичок и только начал пробовать java около трех недель назад, так может кто-то помочь мне здесь? Я не просто хочу ответа, я хочу понять, почему это не работает.

+0

Посмотрите, что означает тип возврата void. –

+0

@DjBarrington здесь - совет для вас, если вы используете IDE, например _Eclipse_, тогда для вас могут быть созданы сеттеры/геттеры. Нажмите кнопку ** Source ** в строке меню, а затем ** Generate Getters and Setters ** – smoggers

+1

Я думаю, что вы ошибаетесь [Void] (http://stackoverflow.com/questions/676663/what-do-return -if-the-return-type-of-the-method-is-void-not-void) и возвращаемый тип, который, я думаю, вы хотите, который имеет нижний регистр v, 'void') – scrappedcola

ответ

1

Поскольку метод недействителен и вы возвращаете значения, если он недействителен, вы не должны возвращать значение этим двум методам или редактировать их по их возвращаемым типам. Просто попробуйте удалить возвращаемые утверждения, сеттеры на самом деле не возвращают их просто установить, что ненужно, так как у вас есть геттер

1

по словам user6798995 вопрос ниже код

public Void setFace(int face) 
    { 
     face = face; 
     return face; 
    } 
    public Void setSuit(String suit) 
    { 
     suit = suit; 
     return suit; 
    } 

вы не можете вернуть то, что если возвращаемый тип является ничтожным

Так как таковые должны быть

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

    } 

Для основного метода вы можете сделать

Card c=new Card(); 
c.setFace(7); 
c.setSuit("Clubs"); 

System.out.prinln("Face is"+c.getFace +" Suit is"+ c.getSuit()); 
3

Ok есть два вопроса здесь: 1- Первый вопрос не обязательно неправильно вещь, но это на самом деле не нужен здесь , Вы сделали свой метод возвратом Void, который понадобился бы в классе, который разрешает только методы, возвращающие только объекты или любой другой подобный сценарий. Хотя здесь пустоты было бы действительно достаточно.

2 void ничего не значит. Поэтому, если ваш тип возврата недействителен, вы не должны возвращать что-либо, на самом деле не имеет смысла вызывать метод setSuit, а затем попросить его вернуть значение, это как сказать своему другу, чтобы положить пищу в холодильник и ждать он, чтобы дать вам еду. Теперь, если вы использовали «Пустоту», о которой я вам советовал, вам придется возвращать нуль, поскольку Void - это объект, поэтому его нужно вернуть. Поскольку Пустота также ничего не значит, это не имело бы смысла для того, чтобы быть instantialbe (т.е. вы не можете»сделать это:

Void nothing=new Void(); 

Таким образом, в этом случае вам придется возвращать нуль (что ничего не значит) Теперь, если. последняя часть не имела смысла, это нормально, просто поместил пустоту в качестве возвращаемого типа, и вам нечего было бы возвращать.

Наконец, вы должны положить это, что вы сказали, что вставили, так как «это» сделает java осознайте, к какому лицу/к которому вы обращаетесь, таким образом присваивая параметру лицом метода setFace/SetSuits значение параметра лица объекта (это).

Вот модифицированная версия ваших методов:

public void setFace(int face){ 
    this.face = face; 
} 

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

хорошо, если кто-то приходит через это, я узнал трудный путь, но пустота должна быть использована. «Пустота» - это объект, и это то, что давало мне проблемы.

Смежные вопросы