Java 如何正确设置Getters setter和convertmintosec?

Java 如何正确设置Getters setter和convertmintosec?,java,Java,基本上,我对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

基本上,我对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设置器和转换为min-sec

你知道,当你的老师从2+2开始时,你把目光移开,回头看,他们的分数是2>(2+2)^8=x/5*3ve+32%是的,我会把这个和那个做比较

有人请告诉我如何正确设置getters setter并将min转换为sec来帮助我。我已经试过适当地设置,但不幸地失败了


我的预期结果是,它能正确地回忆输出和发布的年份,但它不会因为说了错误的符号而出错,这是我第一次发帖子,所以我知道这看起来非常愚蠢,但对我来说不是,我在网上看了看,找不到关于这方面的好内容,我指望你们在我不知道的时候给我这样的无名小卒指点迷津!如果您回答了,感谢您花时间回答。

有一些普遍接受的约定应该遵循,这使阅读代码更容易

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

private String Maker;
应该是

private String maker;
public int getYearReleased() {
    return yearReleased;
}
getter/setter应以以get/set开头的驼峰式命名。这就是所谓的POJO(普通旧java对象)。许多库需要这种getter/setter命名才能正常工作。例如:

private String Maker;
public String getyearReleased()
应该是

private String maker;
public int getYearReleased() {
    return yearReleased;
}
getter应该只返回与getter方法名匹配的变量。你的一些获得者正在归还其他东西。不要这样做

将分钟转换为秒。请注意命名方法的驼峰帽方式

public long convertMinToSecond(long minutes) {
    return minutes * 60;
}

让我试着向您解释
getter
setter
的概念

您的类
Song
有一些
private
数据字段。这意味着它们对外界是隐藏的。现在,如果该类之外的任何实体需要使用这些字段,那么它将必须执行额外的步骤。此步骤是一个
getter
setter
方法

getter方法帮助实体从这些字段中获取(或检索)值。setter方法有助于为这些字段设置值

记住,getter和setter是从字段获取/设置的,而不是整个类。这就是为什么出现以下问题的原因:

public String getyearReleased() {
        return Song;
}
在上面的代码中,您首先说希望从
getyearReleased()
方法返回
String
,但是您看到实际上返回的是
Song
,这是一个类

下面是一个简单的示例,说明了您的类有两个字段,以及如何在外部类中通过
main()
方法获取/设置这些字段

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;
    }

}
您应该注意,setter不会返回任何内容,因为它们只是设置值。 但是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

希望有帮助。

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

第一条“规则”:所有变量都应该从小的
maker
开始,而不是
maker
。如
yearReleased
。这被称为camelCase,因为这些词看起来像骆驼一样有“驼峰”——但有没有见过骆驼以驼峰开头

这就引出了第二条“规则”:类名以大写字母开头,如
String
Song

还有第一个打字错误:

public string getyearReleased(){    // it should say String not string 
   return yearReleased;
}
为了做到绝对一致,因为变量名为
yearrelease
,所以您的方法应该尊重变量的编写,并被称为
getyearrelease

现在,您的代码中有两次这种方法:第一次出现的是
返回歌曲这没有意义。(你想要的是“年”而不是“歌”)。但是,由于您有第二个引用,因此可以删除该引用

因此,您发布了
年的“getter”
,现在您需要一个“setter”

看看这和你的构造器是什么样的?给该方法一个名为“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
。我想它应该在几秒钟内转换歌曲的
长度
,这基本上就像
长度*60

不要问我这种方法的必要性——你可以做到:

 public int convertMinToSec(){
      return // calculate how many seconds the song lasts
 }

就这样。抱歉,时间太长了,但我希望它对您有所帮助。

Hi@KAHMAR STATHUM,欢迎来到StackOverflow。尽量不要用大写来强调,你可以用粗体来代替。避免说您觉得编码或java很复杂。没有人天生就有编程技能。这就是SO的目的,使您成为一名更好的程序员。关于您的问题,请尝试使用以小写字母开头的camelCase变量名。关于getter/setter,它们应该用于名称中包含的变量:getyearReleased()应该将yearReleased作为int返回