-2

当方法单一时,它工作正常。

String as = System.getProperty("line.separator");

    ArrayList<String> products = new ArrayList<String>();
products.add("Banana" +as+ "Its color is yellow.");
products.add("Orange" +as+ "Orange is a sour fruit.");
products.add("Onion" +as+ "Onion usually used on Pizza");

如果它被分成多个;这没用。

String as = System.getProperty("line.separator");

ArrayList<String> products = new ArrayList<String>();
    addFirstThousand(products);
    addSecondThousand(products);

    private void addFirstThousand(ArrayList<String> products) {
        products.add("Banana" +as+ "Its color is yellow.");
        products.add("Orange" +as+ "Orange is a sour fruit.");
        products.add("Onion" +as+ "Onion usually used on Pizza");
        }

    private void addSecondThousand(ArrayList<String> products) {
    products.add("Apple" +as+ "Apple is a big corporation");
    products.add("Love" +as+ "Love is releted to heart");
    products.add("Pizza" +as+ "It's origineted from Italy");

    }

为了更容易理解:

在此处输入图像描述

如何将其拆分为多个?

4

3 回答 3

3

您正在尝试从类代码本身中调用方法。您不能这样做(静态初始化块除外,在这种情况下不起作用)。

根据您的工作地点,需要移动以下代码:

addFirstThousand(products);
addSecondThousand(products);
  • 如果您在 中工作Activity,则此代码应在onCreate();
  • 对于一个Fragment,使用onViewCreated()
  • 对于其他任何事情,请使用构造函数。

其余的应该保持原样。

像这样的东西(对于一个Activity):

public class MyActivity extends Activity {
    String as = System.getProperty("line.separator");

    ArrayList<String> products = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addFirstThousand(products);
        addSecondThousand(products);
    }

    private void addFirstThousand(ArrayList<String> products) {
        products.add("Banana" +as+ "Its color is yellow.");
        products.add("Orange" +as+ "Orange is a sour fruit.");
        products.add("Onion" +as+ "Onion usually used on Pizza");
    }

    private void addSecondThousand(ArrayList<String> products) {
        products.add("Apple" +as+ "Apple is a big corporation");
        products.add("Love" +as+ "Love is releted to heart");
        products.add("Pizza" +as+ "It's origineted from Italy");
    }
}
于 2012-12-14T03:53:34.317 回答
0

可能有原因。。

  1. 您正在从静态方法调用addFirstThousand(products);这些 addSecondThousand(products);方法。
    解决方案:make addFirstThousand(products);and addSecondThousand(products);to static使用创建对象调用这些方法。
  2. 您正在调用来自不同类的这些方法addFirstThousand(products);解决方案:使用创建对象调用这些方法。addSecondThousand(products);
于 2012-12-14T05:11:16.883 回答
0

我只能猜测没有确切编译器错误的答案。我的猜测是您已经在另一个方法中声明了addFirstThousand()andaddSecondThousand()方法。Java 不允许这样做。如果是这种情况,那么您可以通过将这些方法移到包含方法之外来解决问题。它们应该在一个中声明,而不是在其他方法中。

于 2012-12-14T03:52:48.720 回答