【发布时间】:2014-08-11 16:33:56
【问题描述】:
我有一个对象的 ArrayList。对象是花。将鲜花添加到鲜花列表后,我想打印出每朵鲜花的名字。每当我添加一朵花时,我都会给这朵花起个名字。假设我添加了三朵花,分别名为“玫瑰”、“郁金香”和“水仙花”。当我运行遍历 ArrayList 的函数时,我得到的只是三个水仙花。如果我添加五朵花,它会显示五朵花,但它们都有我添加的最后一朵花的名字。这是我的主要课程:
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 以将其显示给用户。感谢您的任何建议。
【问题讨论】:
-
从
flowerClass中的任何地方删除static关键字 -
将你的 for 循环更改为
for(flowerClass o : flowerPack)并从所有地方删除静态 -
非常感谢大家!我会回去回顾一下静态的、公开的、私有的。似乎这是最令人头疼的问题,以及将 Object 替换为flowerClass。我将尝试所有这些并查看关键字。
-
我不觉得这是重复的原因是因为这个问题还涉及迭代对象 ArrayList 的正确方法。它不仅仅处理静态本身。除了直接针对类访问方法之外,我的问题还涉及创建多个对象和访问特定属性而不仅仅是方法的细微差别。