【问题标题】:Adding an arraylist into a constructor将数组列表添加到构造函数中
【发布时间】:2015-06-12 20:10:26
【问题描述】:

我在一个名为 Sport 的类中有一个构造函数

public Sport(String i_sportName,int i_usagefee, int i_insurance, int i_affiliation, ArrayList<Integer> i_courtNo)

我想知道如何将从另一个名为 Club 的类的文本文件中读取的信息传递给具有以下格式的 Sport 的构造函数:

//name,usagefee,affilfee,userfee,courtno 网球,12,44,23,12,13,15,6,7

这是我当前加载文本文件的代码

public void loadSports()
{
     try
    {
        FileReader input = new FileReader("location/sports.txt");
        BufferedReader br = new BufferedReader(input);
        String line;

        String result;
        String delims = ",";
        System.out.print("\f");
        sports = new ArrayList<Sport>();
        ArrayList<Integer>courtNo = new ArrayList<Integer>();
        while((line=br.readLine())!=null)
        {
            //System.out.println(line);
            String[] linearr = line.split(delims);
            for(int i=0;i<linearr.length;i++)
            {
                System.out.println(linearr[0]);
                //Sport sports = new Sport(linearr[0],linearr[1],linearr[2],linearr[3],courtNo.add(1,2,3,4));
            }
        }
        input.close();
    }
    catch(IOException e)
    {
       e.printStackTrace();
    }
}

【问题讨论】:

    标签: java bluej


    【解决方案1】:

    不,你的尝试是这样的:

    String[] linearr = line.split(delims);
    Sport sports = new Sport(linearr[0], linearr[1], linearr[2], 
        linearr[3], courtNo.add(1,2,3,4));
    

    因为您的构造函数采用非字符串参数,所以不会起作用。您可以创建一个全字符串构造函数,这是我推荐的,或者只是在 while 循环中处理数据,使其符合构造函数的要求,包括将数字字符串解析为数字,但是做所以在 try/catch 块中。

    至于 ArrayList,是的,在 while 循环中创建一个,然后用文本文件中的数据填充它,如果您知道要添加多少项,可能使用 for 循环,或者如果您知道要添加多少项,则使用内部 while 循环不要,然后将其传递给构造函数。

    要将整数存储在 ArrayList 中:

    • 在 while 循环中创建 ArrayList。
    • 当您解析您的文本行时,您将拥有 1 个字符串,几个单独的字符串代表您的各个 int 参数 - 您需要解析其中的每一个,然后解析您的 ArrayList 字符串/整数。当您使用 for 循环遍历它们时,将每个 String 解析为 int,然后通过 add(...) 方法将其添加到 ArrayList 中。
    • 然后,在完成该内部 for 循环后,将所有参数传递给构造函数。

    你应该自己做的代码。

    【讨论】:

    • 抱歉,我不明白您所说的按摩数据是什么意思?你能举个例子吗?
    • @YongJ:我的意思是通过Integer.parseInt(...)将字符串变成整数等数字。
    • 我传递给的构造函数在那里有一个整数数组列表。我想将文本文件中的最后几个数字存储到其中。我怎么做?我是否按索引号将它们分开?这就是我现在所拥有的。体育运动 = new Sport(linearr[0],Integer.parseInt(linearr[1]),Integer.parseInt(linearr[2]),IntegerparseInt(linearr[3]),courtNo.add(i));
    • @YongJ:见编辑回答。您将需要一个内部 for 循环,您需要解析每个 int before 将其传递给构造函数。不要急于求成或过度压缩您的代码,因为那会带来灾难。
    猜你喜欢
    • 2021-06-15
    • 2013-11-28
    • 2014-04-22
    • 1970-01-01
    • 2019-09-06
    • 2021-12-20
    • 2014-09-18
    • 2016-04-29
    • 2018-03-19
    相关资源
    最近更新 更多