0

通过阅读教程和练习 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());
    }
}
4

8 回答 8

2

你是不是忘记在 getArrayList() 中添加 addString() 了?

于 2013-03-26T17:34:08.400 回答
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
}
于 2013-03-26T17:35:49.773 回答
2

创建 a 的对象ArrayList并将引用传递给不同的方法。示例在主类中创建一个ArrayList对象并将其传递给addString&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");
}
...
于 2013-03-26T17:31:57.057 回答
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 教程。这是一个基本概念,如果你不巩固你的基础,你可能会感到非常沮丧。

于 2013-03-26T17:37:32.513 回答
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;
  }
}
于 2013-03-26T17:34:01.210 回答
0

数组对象的范围是这里的问题。您正在将字符串添加到 1 个数组并尝试打印另一个数组。删除 addString() 中的静态块和数组声明。像这样在类定义旁边声明数组,

类苹果 { ArrayList destinationArray = new ArrayList(); …………

它应该工作。

于 2013-03-26T17:48:59.560 回答
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());
}

}

输出:

[示例1,示例2]

于 2013-12-19T09:37:58.893 回答
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());
    }
}
于 2013-03-26T17:45:25.913 回答