首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从java的方法返回arraylist变量

从java的方法返回arraylist变量
EN

Stack Overflow用户
提问于 2014-04-01 12:40:20
回答 4查看 251关注 0票数 1
代码语言:javascript
复制
 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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-01 12:42:40

tomData是在try block中声明的,.Variables声明在try块中是不可访问的,在it.So之外才声明tomData离开try block.Try,这是

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-04-01 12:42:21

您已经在您的tomData -block中声明了它,所以它在外部是不可见的。尝试在try-block之前移动声明。

代码语言:javascript
复制
ArrayList<DetailTom> tomData;

try {
    ...
    tomData = ...

还要注意,我已经假定了一个更标准的命名约定:类名应该以大写字母开头。

票数 5
EN

Stack Overflow用户

发布于 2014-04-01 12:42:25

当您试图返回tomData时,它超出了范围。有很多方法可以解决这个问题,但最简单的方法是在tomData块之前声明和初始化try

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22786184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档