Java 如何正确设置Getters setter和convertmintosec?
基本上,我对java非常陌生,我一直在努力,我已经走到了这一步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
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返回