我想从用户那里收集用户信息,然后将其显示给他们。我想我一直坚持从不同的对象构建对象构造函数。
这是我到目前为止所拥有的:
超类:
package com.animal;
public class Creature {
private String size;
private String weight;
public Creature (String size, String weight){
this.size = size;
this.weight = weight;
}
public String getSize() {return size;}
public void setSize(String size) {this.size = size;}
public String getWeight() {return weight; }
public void setWeight(String weight) {this.weight = weight; }
void displayCr(){
System.out.println("***Creatures***");
System.out.println("Size: " + size);
System.out.println("Weight: " + weight);
这是我的Land Subclass:
package com.animal;
public class Land extends Creature {
private String landAnimal;
public String getLandAnimal() {return landAnimal;}
public void setLandAnimal(String landAnimal) {this.landAnimal = landAnimal;}
public Land(String size, String weight, String landAnimal) {
super(size, weight);
this.landAnimal = landAnimal;
这是我的Water子类:
package com.animal;
public class Water extends Creature {
private String fish;
public String getFish() {return fish;}
public void setFish(String fish) {this.fish = fish;}
public Water(String size, String weight, String fish) {
super(size, weight);
this.fish = fish;
}
然后这是我的主叫王国:
package com.animal;
import java.util.ArrayList;
import java.util.Scanner;
public class Kingdom {
public static void main(String[] args) {
ArrayList<Creature> user = new ArrayList<Creature>();
Scanner input = new Scanner(System.in);
int selection = 0;
while(selection != 4){
System.out.println("****Main Menu****");
System.out.println("Enter 1 for Land Animal");
System.out.println("Enter 2 for Water Animal");
System.out.println("Enter 3 to Display Animal");
System.out.println("Enter 4 to quit");
selection = input.nextInt();
if(selection==1 || selection==2){
Creature userInfo = null;
System.out.println("Enter Size ");
String size = input.next();
System.out.println("Enter Weight: ");
String weight = input.next();
}
if(selection == 1){
System.out.println("Enter Land animal type: ");
String landAnimal = input.next();
//userInfo = new Land(size, weight, landAnimal);
//user.add(userInfo);
}
else if(selection == 2){
System.out.println("Enter Water animal type: ");
String fish = input.next();
//userInfo = new Water(size, weight, fish);
}
//creature.add(userInfo);
//System.out.println(user.displayCr());
}
我觉得我正走在正确的道路上,但最后的步骤并没有为我点击,我一直在研究,阅读,视频,没有任何东西在点击。
另外,如果我在这篇文章中犯了新手错误,我道歉。我将接受所有批评,建议和帮助作为积极的教训。谢谢。
答案 0 :(得分:0)
总的来说,你的代码是相当正确的。
除了:
Creature userInfo = null;
你在第一个IF中定义它,它的范围将限制在那个IF。
一旦你离开它,它就不再存在,因此你不能在下面的IF中使用它。
考虑以下范围变更:
if(selection==1 || selection==2){ // main IF
Creature userInfo = null;
...
if(selection == 1){
...
}
else {
...
}
System.out.println(userInfo.displayCr());
} // end of main IF
答案 1 :(得分:0)
首先扩展尺寸,重量和userInfo的范围意味着将其保持在主要内部但在条件之外,因为它在任何地方都被使用。这样的事情。
int selection = 0;
String size = null;
String weight = null;
Creature userInfo = null;
而不是这个
creature.add(userInfo);
应该是
user.add(userInfo);
并像这样调用显示
userInfo.displayCr();
因为方法的返回类型是void,所以不能在sysout中使用,它应该在else if(){}