在我的课堂上,我们正在开发一个创建卡片的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,所以有人可以帮助我吗?我不想要一个答案,我想知道为什么这不起作用。
答案 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)