猿问

如何正确设置 Getters setters 和 conversionmintosec?

基本上我对java非常陌生,我在硬核方面苦苦挣扎,我已经走到这一步了


public class Song {


  //Instance field


  private String Maker;

  private String Name;

  private int Length;

  private String Type;

  private int yearReleased;



    //0 Arg


    public Song() {

        Maker = "Logic";

        Name = "1-800";

        Length = 4;

        Type = "Hip Hop";

        yearReleased = 2017;

    }


    //Multi Arg


    public Song(String Maker, String Name, int Length, String Type) {

        this.Maker = Maker;

        this.Name = Name;

        this.Length = Length;

        this.Type = Type;

        this.yearReleased = yearReleased;

    }


    public String getyearReleased() {

        return Song;

    }

    public void setName(string name) {

        this.yearReleased = yearReleased;

    }

    public String getyearReleased() {

        return yearReleased;

    }


    //Method


    public String toString() {

        String output;

        output = "The artist of this song is " + Maker + "\n" +

             "The name of this song is called " + Name + "\n" +

             "This song is " + Length + " Minutes long" + "\n" +

             "The genre of this song is " + Type;

        return output;

     }

}

我已经做好了司机。是的,这会出现错误,我还需要添加,convertMinToSec()但是发生了什么?我如何正确设置 getters setters 并将其转换为分钟秒?


你知道,当你的老师从 2+2 开始时,你看向别处,再回头看,他们的分数是 2>(2+2)^8 = x/5*3ve+32% 是的,我会将这个与那个进行比较。


有人请帮助我告诉我如何正确设置 getter setter 并将分钟转换为秒。我已经尝试过正确设置但惨败。


我的预期结果是它能够正确回忆输出和发布的年份,但它不会因为说出不正确的符号而出错,这是我第一次发帖,所以我知道这看起来绝对愚蠢,但对我来说它不是,我在网上查了一下,找不到这方面的好内容,我就靠你们在我不知道的时候给像我这样的菜鸟指点迷津了!如果您回答的话,感谢您抽出宝贵的时间来回答。


繁花如伊
浏览 125回答 3
3回答

温温酱

getters让我尝试向您解释和的概念setters。您的班级Song有一些private数据字段。这意味着它们对外界隐藏。现在,如果此类之外的任何实体需要使用这些字段,则必须执行额外的步骤。此步骤可以是一个getter或一个setter方法。getter 方法帮助实体从这些字段获取(或检索)值。setter 方法有助于为这些字段设置(或分配)值。请记住,getter 和 setter 是从字段获取/设置字段,而不是整个类。这就是为什么存在以下问题:public String getyearReleased() {        return Song;}在上面的代码中,你首先说你想String从getyearReleased()方法中返回 a,但是你看到你实际上返回的是Song,它是一个类。main()这是一个包含 2 个字段的类的简单示例,以及如何通过外部类中的方法获取/设置它们。public class Song {    private String songName;    private int yearReleased;    // Getter method for Song Name    public String getSongName() {        System.out.println("Getting the song name.");        return songName;    }    // Getter method for Year of Release    public int getYearReleased() {        System.out.println("Getting the year of release.");        return yearReleased;    }    // Setter method for Song Name    public void setSongName(String mySong) {        System.out.println("Setting the song name.");        this.songName = mySong;    }    // Setter method for Year of Release    public void setYearReleased(int mySongYear) {        System.out.println("Setting the year of release.");        this.yearReleased = mySongYear;    }}您应该注意,设置器不会返回任何内容,因为它们只是设置值。但 getter返回与正在检索的字段相同的数据类型。您可以在该类中调用 getter 和 setter 方法。该类将包含以下main()方法:public class SongDemo {    public static void main(String[] args) {        Song demoSong = new Song();        // call the setters        demoSong.setSongName("Summer of 69");        demoSong.setYearReleased(1988);        // call the getters and print the values returned        System.out.println(demoSong.getSongName());        System.out.println(demoSong.getYearReleased());    }}您的输出如下所示:Setting the song name.Setting the year of release.Getting the song name.Summer of 69Getting the year of release.1988希望能帮助到你。

慕丝7291255

应遵循普遍接受的约定 - 它使阅读代码更容易。所有变量名称都应以小写字母开头。例子:private String Maker;应该private String maker;Getters / Setters 应该以驼峰式命名,以 get/set 开头。这使其成为所谓的 POJO(普通旧 java 对象)。许多库需要 getter/setter 的这种命名才能正常工作。例子:public String getyearReleased()应该public int getYearReleased() {    return yearReleased;}getter 应该只返回与 getter 方法名称匹配的变量。你的一些吸气剂正在返回其他东西。不要这样做。将分钟转换为秒。请注意以驼峰式命名该方法的方式。public long convertMinToSecond(long minutes) {    return minutes * 60;}

白衣非少年

好吧,不要不知所措,从头开始:第一个“规则”:所有变量都应该从小 maker而不是开始Maker。喜欢yearReleased。这被称为驼峰命名法,因为这些单词看起来像骆驼一样有“驼峰” - 但你见过骆驼以驼峰开头吗?这引出了第二条“规则”:类名以大写字母开头,如String或Song。还有第一个错字:public string getyearReleased(){    // it should say String not string    return yearReleased;}为了绝对连贯,因为你的变量被称为yearReleased你的方法应该尊重变量的书写并被调用getYearReleased。现在,您的代码中出现了两次此方法:第一次出现表明return Song;哪个没有意义。(你想要的是“年份”而不是“歌曲”)。但由于出现了第二次,您可以删除该次。所以你有了 的“getter” yearReleased,现在你需要一个“setter”public void setYearReleased(int yearReleased){    this.yearReleased=yearReleased;}看看这和你的构造函数中的一模一样吗?您为该方法提供一个名为“yearReleased”的变量,它将将该值分配给“全局变量” this.yearReleased。您已将值设置为您的对象。基本上 getter/setter 是这样的: private String maker;   // your global field / variable / member ... whatever you want to call it /** the getter */ public String getMaker(){   //fyi because you are taping two words together the second one gets a capital letter.    return this.maker; } /** the setter */ public void setMaker(String maker){    this.maker = maker;         }设置器也将与 public void setMaker(String theMakerOfThisAwesomeSong){    this.maker = theMakerOfThisAwesomeSong; }相同的结果。一旦你编写了所有的 getter 和 setter - 通常这是为所有字段完成的,例如maker, name, length, type, yearReleased- 然后你可以修复你的构造函数:public Song(String maker, String name, int length, String type, int yearReleased){   // you forgot to include the yearReleased     ...}最后但并非最不重要的一点是方法convertMinToSec。我想它应该length在几秒钟内转换歌曲的,这基本上就像length*60.不要问我这种方法的必要性——你就可以这样做: public int convertMinToSec(){      return // calculate how many seconds the song lasts }就是这样。很抱歉,如果这篇文章太长了,但我希望它能对你有所帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答