从阅读教程和练习Java,我遇到了一个问题。我创建了一个String ArrayList,为其添加了字符串。但是我想要一个允许我向这个arrayList添加更多字符串的方法和另一个允许我显示这个arrayList的方法。下面是我试图解决这个问题。我的代码只打印一个空数组列表
class apples {
public static void main(String[] args) {
viewArrayList(); //prints a empty arraylist
}
public static void addString() {
ArrayList<String> destinationArray = new ArrayList<String>();
destinationArray.add("example1");
destinationArray.add("example2");
}
static ArrayList GetArrayList() {
ArrayList<String> destinationArray = new ArrayList<String>();
return destinationArray;
}
public static void viewArrayList() {
System.out.println(GetArrayList());
}
}
答案 0 :(得分:2)
创建ArrayList
的对象并传递对不同方法的引用。示例在主类中创建ArrayList
对象并将其传递给addString
&amp; display
方法。
public static void main(String[] args){
List<String> destinationArray = new ArrayList<String>();
viewArrayList(destinationArray);
displayArrayList(destinationArray);//prints a empty arraylist
}
public static void addString(List destinationArray ){
destinationArray.add("example1");
destinationArray.add("example2");
}
...
答案 1 :(得分:2)
您是否忘记将addString()添加到getArrayList()?
答案 2 :(得分:2)
您的变量destinationArray
在方法中声明,它只是在addString()
之外的此方法中存在,该对象不再存在,您无法在其他方法中访问它。要做到这一点,你必须将它声明为类变量:
class apples{
ArrayList<String> destinationArray = new ArrayList<String>();
public static void main(String[] args)
执行程序时,实际上它会执行main方法,因此如果要执行方法addString()
,则必须在main函数中调用它。它看起来像这样:
public static void main(String[] args)
{
this.addString();
this.viewArrayList(); //prints a empty arraylist
}
答案 3 :(得分:0)
我会做这样的事情:
class apples
{
private ArrayList<String> array = new ArrayList<String>();
public void addString(String addString)
{
this.array.add(addString);
}
public ArrayList<String> GetArrayList()
{
return array;
}
}
答案 4 :(得分:0)
一个问题是您为每个方法使用不同的数组列表。每次使用关键字new
时,您都会创建一个新的(和空的)列表。
在类的顶部创建一次ArrayList ...
private ArrayList<String> myList = new ArrayList<String>();
然后在所有其他方法中引用myList,而不为其指定新值。
public ArrayList<String> getArrayList() {
return myList;
}
public void addSomeStrings() {
myList.add("Some String");
myList.add("Some Other String");
}
并且不要害怕通过Java教程。这是一个基本概念,如果你不支持你的基础,你可能会感到很沮丧。
答案 5 :(得分:0)
编译并运行以下程序。
import java.util.ArrayList;
class Apples {
static ArrayList<String> destinationArray = new ArrayList<String>();
public static void main(String[] args) {
System.out.print("First time");
viewArrayList();
addString("Example1");
addString("Example2");
addString("Example3");
System.out.print("Second time");
viewArrayList();
addString("Example4");
addString("Example5");
System.out.print("Third time");
viewArrayList();
}
public static void addString(String example) {
destinationArray.add(example);
}
static ArrayList getArrayList() {
return destinationArray;
}
public static void viewArrayList() {
System.out.println(getArrayList());
}
}
答案 6 :(得分:0)
数组对象的范围是这里的问题。您正在将字符串添加到1个数组并尝试打印另一个数组。删除addString()中的静态块和数组声明。声明类定义旁边的数组,如下所示,
class apples { ArrayList destinationArray = new ArrayList(); .. ....
它应该工作。
答案 7 :(得分:0)
代码:
public class Apples {
public static void main(String[] args) {
viewArrayList(); //prints a empty arraylist
}
public static ArrayList<String> addString() {
ArrayList<String> destinationArray = new ArrayList<String>();
destinationArray.add("example1");
destinationArray.add("example2");
return destinationArray;
}
public static ArrayList<String> GetArrayList() {
return addString();
}
public static void viewArrayList() {
System.out.println(GetArrayList());
}
}
输出:
[example1,example2]