2015-05-04 90 views
0

有什麼方法可以在主方法之外聲明我的數組列表嗎?下面的代碼給了我一個錯誤,說「語法錯誤,在標記上」;「,@預計」。將元素添加到主方法之外的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); 
    } 

} 

我能解決這個問題,如果我有我的主要方法中的所有語句,然後它的工作原理,並打印出的陣列控制檯。問題是該數組在其他更大的程序中不可用。例如在下面的代碼中,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對其他方法可用。雖然我會很感激任何答案,特別是如果只能以一種方式做到這一點。

回答

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(); 
     } 

    } 

如果要移動的所有代碼主要方法外,你需要使用一個靜態初始化

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(); 
     } 

    } 
0

閱讀關於類的java教程。您可以在類字段中保存信息,然後可以從類方法中獲取信息。 例如:Oracle tutorial

1

不,您不能在方法外添加元素。但是,您可以創建一個靜態方法來爲您添加元素到數組中。

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

這樣你就可以傳遞一個元素作爲參數。

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(); 
    } 
} 
1

原因是x.add(0)是一個處理/執行聲明,應該把我沒有像main這樣的方法。 像ArrayList<Integer> x這樣的聲明語句可以放在方法之外,但是應該放在類裏面。

相關問題