从java中的方法返回arraylist变量

时间:2014-04-01 12:40:20

标签: java methods arraylist return

 public ArrayList<detailTom>  read() 
{
   try 
   {
       /*System.out.println("Hello");*/
       BufferedReader in = new BufferedReader(new FileReader("G:/sample.txt"));
       String data;
       ArrayList <String> list = new ArrayList<String>();
       ArrayList<String> tomList= new ArrayList<String>();
       ArrayList<detailTom> tomData = new ArrayList<detailTom>();

       while((data= in.readLine())!=null)
       {
           /*System.out.println(data);*/
           String[] splits=data.split(" ");
           for(int i=0;i<splits.length;i++)
           {
                 if (splits[i].equals("tom"))
                 {
                       detailTom dummy= new detailTom();
                        dummy.name="tom";
                        dummy.mark1=Integer.parseInt(splits[1]);
                        dummy.mark2=Integer.parseInt(splits[2]);
                        dummy.mark3=Integer.parseInt(splits[3]);
                        dummy.mark4=Integer.parseInt(splits[4]);
                        dummy.mark5=Integer.parseInt(splits[5]); 

                        tomData.add(dummy);

                 }
           }

       }

   }

   catch (FileNotFoundException ex) 
   {
       Logger.getLogger(MyInterface.class.getName()).log(Level.SEVERE, null, ex);
   } catch (IOException ex) 
   {
       Logger.getLogger(MyInterface.class.getName()).log(Level.SEVERE, null, ex);
   }
   return tomData;


} 

您好!

我正在尝试返回一个变量tomData,它是ArrayList类的一个对象。 detailTom是一个包含变量,getter,setter等的类。我想要做的是我的方法read()返回tomData。但是我在行返回tomData时遇到错误。

错误说: -

无法找到符号 符号:变量tomData

4 个答案:

答案 0 :(得分:5)

您已在tomData - 块中声明了try,因此在外面无法看到。尝试在try - 阻止之前移动声明。

ArrayList<DetailTom> tomData;

try {
    ...
    tomData = ...

另请注意,我已采用更标准的命名约定:类名称应以大写字母开头。

答案 1 :(得分:4)

当您尝试返回时,

tomData超出范围。有很多方法可以解决这个问题,但最简单的方法是在<{em} tomData块之前声明并初始化try

答案 2 :(得分:3)

tomDatatry block内声明。在try块中声明的变量在其外部不可见。所以只需从tomData声明try block。试试这个

public ArrayList<detailTom>  read() 
{
   ArrayList<detailTom> tomData = null;
   try 
   {
       /*System.out.println("Hello");*/
       BufferedReader in = new BufferedReader(new FileReader("G:/sample.txt"));
       String data;
       ArrayList <String> list = new ArrayList<String>();
       ArrayList<String> tomList= new ArrayList<String>();
       tomData  = new ArrayList<detailTom>();

       while((data= in.readLine())!=null)
       {
           /*System.out.println(data);*/
           String[] splits=data.split(" ");
           for(int i=0;i<splits.length;i++)
           {
                 if (splits[i].equals("tom"))
                 {
                       detailTom dummy= new detailTom();
                        dummy.name="tom";
                        dummy.mark1=Integer.parseInt(splits[1]);
                        dummy.mark2=Integer.parseInt(splits[2]);
                        dummy.mark3=Integer.parseInt(splits[3]);
                        dummy.mark4=Integer.parseInt(splits[4]);
                        dummy.mark5=Integer.parseInt(splits[5]); 

                        tomData.add(dummy);

                 }
           }

       }

   }

   catch (FileNotFoundException ex) 
   {
       Logger.getLogger(MyInterface.class.getName()).log(Level.SEVERE, null, ex);
   } catch (IOException ex) 
   {
       Logger.getLogger(MyInterface.class.getName()).log(Level.SEVERE, null, ex);
   }
   return tomData;


} 

答案 3 :(得分:3)

您在底部的返回tomData发生在声明tomData的try块之外,因此它超出了范围,请尝试在方法顶部声明tomData