【问题标题】:Java help:How do I fix this error?Java 帮助:如何修复此错误?
【发布时间】:2017-01-18 00:41:49
【问题描述】:

在我的课堂上,我们正在编写一个 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,所以有人可以在这里帮助我吗?我不只是想要一个答案,我想了解为什么这不起作用。

【问题讨论】:

  • 看看void的返回类型是什么意思。
  • @DjBarrington 这里是给您的一个提示,如果您使用像 Eclipse 这样的 IDE,那么可以为您生成 setter/getter。点击菜单栏上的Source,然后点击Generate Getters and Setters
  • 我认为你弄错了Void 和我认为你想要的返回类型是小写的 v,void)

标签: java


【解决方案1】:

好吧,如果有人遇到这种情况,我学得很辛苦,但需要使用 void。 “Void”是一个对象,这就是给我带来问题的原因。

【讨论】:

    【解决方案2】:

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

    2- void 没有任何意义。所以如果你的返回类型是 void 你不应该返回任何东西,事实上调用方法 setSuit 然后让它返回一个值是没有意义的,这就像告诉你的朋友把食物放在冰箱里等待他给你食物。现在,如果你使用我建议你反对的“Void”,你将不得不返回 null,因为 Void 是一个对象,所以它是要返回的东西。由于 Void 也没有任何意义,因此将它作为实例是没有意义的(即:你不能这样做:

    Void nothing=new Void(); 
    

    因此,在这种情况下,您将不得不返回 null(这意味着什么)。现在,如果最后一部分没有意义,那没关系,只需将 void 作为返回类型,您就不必返回任何内容。

    最后你必须把你说你放的这个,因为“this”会让java意识到你指的是哪个面/西装,从而将setFace/SetSuits的方法面参数分配给对象的面参数(this)。

    这是您的方法的修改版本:

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

    【讨论】:

      【解决方案3】:

      正如 user6798995 所说,问题在代码下方

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

      如果返回类型为 void,则无法返回某些内容

      所以这些应该是

          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());
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2020-12-27
          • 1970-01-01
          • 2016-09-18
          • 1970-01-01
          • 2023-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多