为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确设置 Getters setters 和 conversionmintosec?

如何正确设置 Getters setters 和 conversionmintosec?

繁花如伊 2023-12-13 15:02:02
基本上我对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 并将分钟转换为秒。我已经尝试过正确设置但惨败。我的预期结果是它能够正确回忆输出和发布的年份,但它不会因为说出不正确的符号而出错,这是我第一次发帖,所以我知道这看起来绝对愚蠢,但对我来说它不是,我在网上查了一下,找不到这方面的好内容,我就靠你们在我不知道的时候给像我这样的菜鸟指点迷津了!如果您回答的话,感谢您抽出宝贵的时间来回答。
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

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 69

Getting the year of release.

1988

希望能帮助到你。


查看完整回答
反对 回复 2023-12-13
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

应遵循普遍接受的约定 - 它使阅读代码更容易。


所有变量名称都应以小写字母开头。例子:


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;

}


查看完整回答
反对 回复 2023-12-13
?
白衣非少年

TA贡献1155条经验 获得超0个赞

好吧,不要不知所措,从头开始:


第一个“规则”:所有变量都应该从小 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

 }

就是这样。很抱歉,如果这篇文章太长了,但我希望它能对你有所帮助。


查看完整回答
反对 回复 2023-12-13
  • 3 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信