【发布时间】:2017-10-07 22:40:17
【问题描述】:
所以我设置了一个方法,每次调用宠物时将其年龄增加 1,但由于某种原因,它给了我最初设置的年龄。
这是列出我的方法和类的文件: 也是这样,但现在跟随一个代码块:
public class Pet
{
String Name;
int Age;
String AdoptionStatus;
String True="not adopted";
public Pet(){
}
public Pet(String Name,int Age){
this.Name=Name;
this.Age=Age;
}
public void SetName(String namesetup){
namesetup=Name;
}
public String GetName(){
return Name;
}
public int GetAge(){
return Age;
}
public int ageincrease(){
return Age+1;
}
public String Getadoptionstatus(){
return AdoptionStatus;
}
public void Setadoptionstatus(String setadoption2){
AdoptionStatus=True;
}
}
这是另一个调用 ageincrease() 但最终给我零的类: 公共类 MainPets {
static Scanner scan = new Scanner(System.in);
private static String Userinput;
private static void mainmenu(){
System.out.println("A."+" " + "List the pets in the store.");
System.out.println("B."+" " + "Age up the pets");
System.out.println("C."+" " + "Add a new pet");
System.out.println("D."+" " + "Adopt a pet");
System.out.println("E."+" " + "Quit");
Userinput=scan.nextLine();
}
public static String Getuserinput(){
return Userinput;
}
public static void main (String [] args){
int Pet3age;
String Pet3name;
Pet Pet1=new Pet("Fido",3);
Pet Pet2=new Pet("furball",1);
Pet Pet3=null;
System.out.println("Welcome to the pet store.Type the letter to make your selection");
MainPets.mainmenu();
while (Userinput.equals("E")||Userinput.equals("A")||Userinput.equals("B")||Userinput.equals("C")||Userinput.equals("D")){
if (Userinput.equals("E")){
System.out.println("Have a good day!");
break;
}
else if(Userinput.equals("A")){
System.out.println("Fido is "+Pet1.GetAge()+ " years old and is " + Pet1.Getadoptionstatus());
System.out.println("furball is " + Pet2.GetAge()+ " years old and is " + Pet2.Getadoptionstatus());
Userinput=scan.nextLine();
}
if(Userinput.equals("B")){
System.out.println("Everyone just got a little older.");
Pet1.ageincrease();//Still keeps Pet1 age to 3
Pet2.ageincrease();//Still keeps Pet2 age to 1
Userinput=scan.nextLine();
}
else if (Userinput.equals("C")){
System.out.println("Please type in a name");
Pet3name=scan.nextLine();
System.out.println("Please type in an age");
Pet3age=scan.nextInt();
Userinput=scan.nextLine();
}
}
}
}
【问题讨论】:
-
对不起,我在上面说它给了我零,而我的意思是说它给了我原始数字
-
您返回的是增加的年龄,但实际上并没有改变
this.Age。 -
我该如何解决这个问题?
-
this.Age += 1? -
不幸的是,我的老师只是希望我在该方法中分配值而不做任何其他事情。这就是为什么我应该创建一个单独的构造函数,将年龄增加 1
标签: java class methods constructor