Java帮助:如何修复此错误?

时间:2016-09-09 19:46:13

标签: 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,这给了我一个返回错误,要求我返回(当然没有工作)

这个当前的设置给我一个错误,说它无法转换为void。

我觉得这很简单,但我是一个新手,大约三周前刚刚开始尝试java,所以有人可以帮助我吗?我不想要一个答案,我想知道为什么这不起作用。

4 个答案:

答案 0 :(得分:3)

好的,这里有两个问题: 1-第一个问题不一定是错误的,但在这里并不是真的需要。你使你的方法返回Void,这在类中只需要允许返回Objects的方法或任何其他类似场景。虽然这里的空白就足够了。

2-无效意味着什么。因此,如果你的返回类型是无效的,你就不应该返回任何东西,事实上,调用方法setSuit然后让它返回一个值就像告诉你的朋友将食物放入冰箱,等他给你食物。现在,如果你使用" Void"因为Void是一个Object,所以我建议你不得不返回null,这样就可以返回。由于Void也没有任何意义,因此它不具备任何意义(即:你不能做到这一点:

Void nothing=new Void(); 

因此,在这种情况下,您将不得不返回null(这意味着什么都没有)。现在,如果最后一部分没有意义,那么就把它视为一种返回类型,你就不必返回任何东西。

最后你必须把你说过的这个,因为"这个"将使java实现你所指的face / suit,从而将setFace / SetSuits的方法face参数赋值给对象的face参数(this)。

以下是您的方法的修改版本:

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

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

答案 1 :(得分:1)

因为该方法是无效的并且您正在返回值,如果它是无效的,您不应该将值返回到这两个方法,或者将它们编辑为返回类型 只需尝试删除返回语句setters实际上不返回它们只是设置这是不必要的,因为你有getter

答案 2 :(得分: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 :(得分:1)

好吧,如果有人碰到这个,我学到了很多方法,但是需要使用无效。 "空隙"是一个对象,这是给我带来问题的。