2014-11-01 124 views
-3

此代碼應該打印ArrayList中的所有元素。它應該通過報告來處理空的ArrayList。在ArrayList中打印元素

這裏是我的代碼:

import java.util.ArrayList; 
public class Lab4ex1 { 
    public static String prtElem(ArrayList<String> arr){ 
     if(arr.size() == 0) { 
      return "Error: The ArrayList must have elements to print out."; 
     } else { 
      for(int i=0;i<arr.size();i++){ 
       return arr.get(i); 
      } 
      return ""; 
     } 
    } 
    public static void main(String[] args){ 
     prtElem([]); 
    } 
} 

然而,當我試着執行它時,我得到一個錯誤在第16行我是否有足夠的陣列或沒有的元素。爲什麼我會得到這個錯誤,我該如何解決這個問題?

+4

'prtElem'需要一個'List'參數 – Reimeus 2014-11-01 19:11:49

+0

什麼在一直線上的錯誤16? – APerson 2014-11-01 19:12:35

+1

假設這段代碼確實有效,你只會打印出一個元素 - 你要返回'arr.get(0)'。 – Makoto 2014-11-01 19:14:41

回答

0

prtElem要求ArrayList<String>作爲它的論據。你正試圖用prtElem([])來稱呼它。

[]不是ArrayList<String>

嘗試定義一個ArrayList<String>並將其傳遞給您的函數。

隨後你會發現(如誠指出),此代碼:

for (int i=0;i<arr.size();i++) { 
    return arr.get(i); 
} 

剛剛返回arr.get(0),因爲它第一次打return,該方法完成。

+0

你怎麼知道這是OP的問題? – APerson 2014-11-01 19:14:35

+0

@APerson:絕對是*其中之一。 – Makoto 2014-11-01 19:14:59

+0

@APerson這是_a_問題。 – khelwood 2014-11-01 19:15:27

0

這將打印在你傳遞給方法的任何ArrayList<String>的所有元素:

public static void prtElem(ArrayList<String> arr){ 
    if(arr.isEmpty()) { 
     System.out.println("Error: The ArrayList must have elements to print out."); 
    } else { 
     for (String s : arr) { 
      System.out.println(s); 
     } 
    } 
} 
0

試試這個:

import java.util.ArrayList; 
import java.util.Arrays; 

public class Lab4ex1 { 

public static void prtElem(ArrayList<String> arr){ 
    if(arr.isEmpty()){ 
     System.out.println("Error: The ArrayList must have elements to print out."); 
    }  
    else{ 
     for (String str : arr) { 
      System.out.println(str);  
     } 
    }  
} 

public static void main(String[] args){ 
    ArrayList<String> arr; 
    arr = new ArrayList<>(Arrays.asList("one", "two", "three","four")); 
    // arr.clear(); test Array when is empty 
    prtElem(arr);   
} 

}