在主方法

时间:2015-05-04 03:44:22

标签: java

有没有办法在主方法之外声明我的arraylist?下面的代码给我一个错误,说“语法错误,令牌”;“,@预期。”

import java.util.ArrayList;

public class ArrayListPractice {

    static ArrayList<Integer> x = new ArrayList<Integer>();
    x.add(0);
    x.add(50);
    x.add(100);

     public static void main(String args[]){

         System.out.println(x);
     }

}

如果我在main方法中包含所有语句然后它可以工作并将数组打印到控制台,我可以解决这个问题。问题是数组在较大程序中不可用于其他方法。例如,在下面的代码中,x无法解析。

import java.util.ArrayList;

public class ArrayListPractice {

    static void printSecondElement(){
        System.out.println(x.get(1));
    }

     public static void main(String args[]){
         ArrayList<Integer> x = new ArrayList<Integer>();
            x.add(0);
            x.add(50);
            x.add(100);
         System.out.println(x);
         printSecondElement();
     }

}

我该如何解决这个问题?最好的答案将解释如何以两种方式做到这一点。这是通过在main方法中声明arraylist而不是main方法之外,同时确保x可用于其他方法。虽然我很感激任何答案,特别是如果它只能以一种方式做到这一点。

6 个答案:

答案 0 :(得分:5)

这将有效

import java.util.ArrayList;

    public class ArrayListPractice {

        public static ArrayList<Integer> x = new ArrayList<Integer>(); 
        static void printSecondElement(){
            System.out.println(x.get(1));
        }

         public static void main(String args[]){

                x.add(0);
                x.add(50);
                x.add(100);
             System.out.println(x);
             printSecondElement();
         }

    }

如果要将所有代码移到main方法之外,则需要使用静态初始化程序

 import java.util.ArrayList;

    public class ArrayListPractice {

        public static ArrayList<Integer> x = new ArrayList<Integer>(); 

        static {
                x.add(0);
                x.add(50);
                x.add(100);
        }
        static void printSecondElement(){
            System.out.println(x.get(1));
        }

         public static void main(String args[]){


             System.out.println(x);
             printSecondElement();
         }

    }

答案 1 :(得分:1)

不,你不能在方法之外添加元素。但是,您创建了一个静态方法,可以为您添加元素。

public static void addElement(int i){
    x.add(i);
}

这样您就可以将元素作为参数传递。

答案 2 :(得分:1)

这应该可以正常工作:

import java.util.ArrayList;

public class ArrayListPractice 
{
    static ArrayList<Integer> x = new ArrayList<Integer>();

    static void printSecondElement()
    {
        System.out.println(x.get(1));
    }

    public static void main(String args[])
    {     
         x.add(0);
         x.add(50);
         x.add(100);
         System.out.println(x);
         printSecondElement();
     }
}

答案 3 :(得分:1)

原因是x.add(0)是一个处理/执行语句,应该放在main之类的方法中。 像ArrayList<Integer> x这样的声明语句可以放在方法之外,但应该放在类中。

答案 4 :(得分:0)

阅读有关类的java教程。您可以在类字段中保存信息,然后可以从类方法访问它。 例如:Oracle tutorial

答案 5 :(得分:0)

另一种方法是包括一个构造函数并在其中添加数据。当然,您将必须初始化obj这样的类;

import java.util.ArrayList;

public class ArrayListPractice {

    static ArrayList<Integer> x = new ArrayList<Integer>();

    public ArrayListPractice() {
        x.add(0);
        x.add(50);
        x.add(100);
    }
    
    public static void main(String args[]){
        ArrayListPractice obj = new ArrayListPractice();
        System.out.println(x);
    }
}