越来越容易混淆构造函数、方法、objects 和 class
Getting more confused with constructor, method, objects and class
我正在学习 Java 语言的构造函数和 object 以及方法。我了解 non-argument 和参数构造函数之间的区别,但我在代码中遇到了一个我似乎无法弄清楚的问题。
我正在编写用于捕获注册信息的代码。我创建了一个 class CompetitionEntry
并在 class 中插入了 2 个私有属性作为 private String projecTitle;
和 private int teamSize;
以及一个 class 属性作为 double feePerParticipant = 6.50;
初始值为 6.50 美元。
然后我创建一个 no-argument 构造函数,我将其初始化为 projectTitle = "N/A";
和 teamSize = 0;
。使用传入参数初始化属性的重载构造函数。
并且我为属性 teamSize 创建了 Mutator 和 Accessor 方法,但我想确保它只有正值除外。最后,我创建 方法 调用 computeTeamFee()
return 总费用 乘以 teamSize 与 feePerParticipant.
我希望我的代码从 computeTeamFee();
方法获得团队总费用的输出,但我似乎找不到问题所在,我需要初始化 object(使用构造函数),标题 的值 "Super Tech" 和 团队规模为 5。
而我只能从objects 方法更改值并显示输出。
请帮助我。越来越糊涂了
public class CompetitionEntry {
private String projectTitle;
private int teamSize;
double feePerParticipant = 6.50;
public CompetitionEntry () {
this.projectTitle = "N/A";
this.teamSize = 0;
}
public void setTeamSize(int teamSize) {
//This part i not to sure how to read only positive value.
if (this.teamSize <= 0) {
System.out.println ("Negative value are not acceptable.")
}
else {
this.teamSize = teamSize;
}
}
public int getTeamSize() {
return teamSize;
}
public double computeTeamFee() {
double totalFee;
totalFee = this.teamSize * feePerParticipant;
return totalFee;
}
public static void main(String[] args) {
CompetitionEntry obj = new CompetitionEntry ("Super Tech","5");
System.out.println("Title: " + obj.projectTitle);
System.out.println("Team Size: " + obj.teamSize);
}
}
CompetitionEntry obj = new CompetitionEntry();
obj.setTeamSize(5);
System.out.println("Team Size: " + obj.teamSize);
您似乎没有收到任何用户输入,所以也许可以看看 https://www.w3schools.com/java/java_user_input.asp。
此外,您的构造函数没有任何参数,因此您应该将构造函数更改为:
public CompetitionEntry ( String title,int teamSize) {
this.projectTitle = title;
this.teamSize = teamSize;
}
如果你不想要负值,你应该在创建对象之前进行检查,可能是这样的:
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
int x = sc.nextInt();
while(x<0){
System.out.println("Enter a positive value: ");
x=sc.nextInt();
}
CompetitionEntry obj = new CompetitionEntry (title,x);
当您创建 CompetitionEntry object 时,您将参数 "Super Tech" 和“5”作为输入。
CompetitionEntry obj = new CompetitionEntry ("Super Tech", 5);
//P.S You put "5" instead of 5 (remove the quotations for integer
//values as its not a string) as shown above
obj 的这些输入参数("Super Tech" 和“5”)对应于构造函数的输入(标题和大小)
public CompetitionEntry (String title, int size) {
this.projectTitle = title;
this.teamSize = size;
}
然后构造函数将 projectTitle 和 teamSize 设置为等于进入构造函数的输入。
您的代码中还有其他一些错误,例如您的 setTeamSize 函数中 System.out.print 行缺少 semi-colon。
我正在学习 Java 语言的构造函数和 object 以及方法。我了解 non-argument 和参数构造函数之间的区别,但我在代码中遇到了一个我似乎无法弄清楚的问题。
我正在编写用于捕获注册信息的代码。我创建了一个 class CompetitionEntry
并在 class 中插入了 2 个私有属性作为 private String projecTitle;
和 private int teamSize;
以及一个 class 属性作为 double feePerParticipant = 6.50;
初始值为 6.50 美元。
然后我创建一个 no-argument 构造函数,我将其初始化为 projectTitle = "N/A";
和 teamSize = 0;
。使用传入参数初始化属性的重载构造函数。
并且我为属性 teamSize 创建了 Mutator 和 Accessor 方法,但我想确保它只有正值除外。最后,我创建 方法 调用 computeTeamFee()
return 总费用 乘以 teamSize 与 feePerParticipant.
我希望我的代码从 computeTeamFee();
方法获得团队总费用的输出,但我似乎找不到问题所在,我需要初始化 object(使用构造函数),标题 的值 "Super Tech" 和 团队规模为 5。
而我只能从objects 方法更改值并显示输出。
请帮助我。越来越糊涂了
public class CompetitionEntry {
private String projectTitle;
private int teamSize;
double feePerParticipant = 6.50;
public CompetitionEntry () {
this.projectTitle = "N/A";
this.teamSize = 0;
}
public void setTeamSize(int teamSize) {
//This part i not to sure how to read only positive value.
if (this.teamSize <= 0) {
System.out.println ("Negative value are not acceptable.")
}
else {
this.teamSize = teamSize;
}
}
public int getTeamSize() {
return teamSize;
}
public double computeTeamFee() {
double totalFee;
totalFee = this.teamSize * feePerParticipant;
return totalFee;
}
public static void main(String[] args) {
CompetitionEntry obj = new CompetitionEntry ("Super Tech","5");
System.out.println("Title: " + obj.projectTitle);
System.out.println("Team Size: " + obj.teamSize);
}
}
CompetitionEntry obj = new CompetitionEntry();
obj.setTeamSize(5);
System.out.println("Team Size: " + obj.teamSize);
您似乎没有收到任何用户输入,所以也许可以看看 https://www.w3schools.com/java/java_user_input.asp。
此外,您的构造函数没有任何参数,因此您应该将构造函数更改为:
public CompetitionEntry ( String title,int teamSize) {
this.projectTitle = title;
this.teamSize = teamSize;
}
如果你不想要负值,你应该在创建对象之前进行检查,可能是这样的:
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
int x = sc.nextInt();
while(x<0){
System.out.println("Enter a positive value: ");
x=sc.nextInt();
}
CompetitionEntry obj = new CompetitionEntry (title,x);
当您创建 CompetitionEntry object 时,您将参数 "Super Tech" 和“5”作为输入。
CompetitionEntry obj = new CompetitionEntry ("Super Tech", 5);
//P.S You put "5" instead of 5 (remove the quotations for integer
//values as its not a string) as shown above
obj 的这些输入参数("Super Tech" 和“5”)对应于构造函数的输入(标题和大小)
public CompetitionEntry (String title, int size) {
this.projectTitle = title;
this.teamSize = size;
}
然后构造函数将 projectTitle 和 teamSize 设置为等于进入构造函数的输入。
您的代码中还有其他一些错误,例如您的 setTeamSize 函数中 System.out.print 行缺少 semi-colon。