2012-03-01 58 views
0

我想創建一個使用文本文件內容的2d數組,但是我無法返回它。它說它找不到符號firstDimension,但是我在方法中聲明它。有任何想法嗎?找不到符號2d數組返回isue

import java.io.*; 
import java.util.*; 

public class Map { 
    public static char[][] readFile() { 
     try { 
      List<String> list = new ArrayList<String>(); 

      String thisLine = null; 
      BufferedReader br; 
      br = new BufferedReader(new FileReader("map.txt")); 

      while ((thisLine = br.readLine()) != null) { 
       list.add(thisLine); 
      } 

      char[][] firstDimension = new char[list.size()][]; 
      for (int i = 0; i < list.size(); i++) { 
       firstDimension[i] = list.get(i).toCharArray(); 
      } 

      for (int i=0; i < firstDimension.length; i++) { 
       for (int j=0; j < firstDimension[i].length; j++) { 
        System.out.print(firstDimension[i][j]); 
       } 
       System.out.println(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return firstDimension; 
    } 
} 
+0

請發表更多的錯誤信息。 – 2012-03-01 12:56:56

回答

1

firstDimension在try塊中聲明,因此它的作用域就是try塊。要能夠返回它try塊外,你需要如下聲明它:

public static char[][] readFile() { 
    char[][] firstDimension = null; 
    try { 
     List<String> list = new ArrayList<String>(); 

     String thisLine = null; 
     BufferedReader br; 
     br = new BufferedReader(new FileReader("map.txt")); 

     while ((thisLine = br.readLine()) != null) { 
      list.add(thisLine); 
     } 

     firstDimension = new char[list.size()][]; 
     for (int i = 0; i < list.size(); i++) { 
      firstDimension[i] = list.get(i).toCharArray(); 
     } 

     for (int i=0; i < firstDimension.length; i++) { 
      for (int j=0; j < firstDimension[i].length; j++) { 
       System.out.print(firstDimension[i][j]); 
      } 
      System.out.println(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return firstDimension; 
} 

在這種情況下,如果遇到異常,你的方法可以返回null。

這是another example of the same issue

+0

這是否意味着當我在try塊內編輯firstDimension時,它實際上不會被永久更改?謝謝你。 – user506912 2012-03-01 12:56:51

+0

在我發佈的完整代碼中,如果沒有引發異常,firstDimension將包含您在try塊中分配給它的任何值。如果引發異常,它將包含引發異常時的值,該值可能爲null或不是。 – assylias 2012-03-01 12:59:22