- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象数组列表。对象是花。将花添加到花列表后,我想打印出每朵花的名称。每当我添加一朵花时,我都会给花命名。假设我添加了三朵花,分别命名为“玫瑰”、“郁金香”和“水仙花”。当我运行迭代 ArrayList 的函数时,我得到的只是三个水仙花。如果我添加五朵花,它会显示五朵花,但它们都有我添加的最后一朵花的名称。这是我的主要类(class):
import java.util.Scanner;
import java.util.ArrayList;
public class mainClass {
static ArrayList<flowerClass> flowerPack = new ArrayList<flowerClass>();
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(true){
System.out.println("1. Add flower to flowerpack.");
System.out.println("2. Display the flowers in the flowerpack.");
int userChoice = input.nextInt();
switch(userChoice){
case 1:
addFlower();
break;
case 2:
displayFlowers();
break;
}
}
}
public static void addFlower(){
Scanner input = new Scanner(System.in);
System.out.println("What is the flower's name?");
String flowerName = input.nextLine();
flowerPack.add(new flowerClass(flowerName));
}
public static void displayFlowers(){
for (Object o: flowerPack){
System.out.println(flowerClass.getName());
}
}
}
这是我的flowerClass:
public class flowerClass {
public static int numberOfFlowers = 0;
public static String flowerName = null;
static String flowerColor = null;
static int numberThorns = 0;
static String flowerSmell = null;
flowerClass(String desiredName){
flowerName = desiredName;
numberOfFlowers++;
}
public static void setName(String desiredName){
flowerName = desiredName;
}
public static String getName(){
return flowerName;
}
}
我尝试使用对象数组而不是 ArrayList。我可以让它显示每个单独的flowerClass对象的唯一地址,但我永远无法成功访问每个对象的flowerName以将其显示给用户。感谢您的任何建议。
最佳答案
有几件事。首先,您不应将其设置为静态:
public static String flowerName = null;
作为静态变量,flowerClass 的所有实例都将具有相同的flowerName。应该是:
public String flowerName; // null is implicit
第二,你的循环:
for (Object o: flowerPack){
System.out.println(flowerClass.getName());
}
您在这里所做的是在flowerClass 类上调用getName()
,而不是flowerClass 的实例。他们编译的唯一原因是因为您将这些方法标记为静态。
从 getter 和 setter 中删除静态(同样,您想要访问flowerClass 的实例,而不是flowerClass 类):
public void setName(String desiredName){
flowerName = desiredName;
}
public String getName(){
return flowerName;
}
然后迭代flowerClass的实例:
for (flowerClass flower: flowerPack){
System.out.println(flower.getName());
}
关于java - 我的对象 ArrayList 没有打印出我想要的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335378/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!