为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取用户输入(args)并将其传递给集合获取方法

如何获取用户输入(args)并将其传递给集合获取方法

手掌心 2022-09-01 16:46:26
我发现了一个进行IRR计算的开源Java代码。我想把它集成到我的程序中。这个想法是输入这个java程序一些金额和日期,然后计算IRR并返回一个数字(双精度)。程序将集合类作为输入(数字和日期的组合)除外,然后返回数字。它可以根据需要使用任意数量的数字和日期。文档中有一些示例代码,但所有这些示例代码都显示了此程序如何在硬编码代码中获取参数。我正在尝试更改它,因此程序将让用户输入将其解析为数字和日期,然后理想情况下将它们转换为集合并将其传递给java程序。我做不到。我无法从用户输入创建集合对象并将其传递给程序。我正在附加示例代码,该示例代码在代码中对值进行了硬编码,我只想编写一个类来动态捕获用户输入(组合值和日期,理想情况下是一个值,一个日期等)并将其传递给XIRR方法。public double xirr_issue5b() {    double rate = new Xirr(        new Transaction(-2610, "2001-06-22"),        new Transaction(-2589, "2001-07-03"),        new Transaction(-5110, "2001-07-05"),        new Transaction(-2550, "2001-07-06"),        new Transaction(-5086, "2001-07-09"),        new Transaction(-2561, "2001-07-10"),        new Transaction(-5040, "2001-07-12"),        new Transaction(-2552, "2001-07-13"),        new Transaction(-2530, "2001-07-16"),        new Transaction(-9840, "2001-07-17"),        new Transaction(38900, "2001-07-18")    ).xirr();    return rate;}
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

需要注意的一点是,您引用的开源软件包中的 XIRR 实现具有(如果您不熟悉 var args)意味着您可以拥有任意数量的事务元素。它还允许您输入数组。XIRR还可以接受集合(例如ArrayLists),所以我在下面的代码中所做的是:public Xirr(Transaction... tx){

  • 在用户输入中创建一个要读取的内容Scanner

  • 创建日期格式化程序以将字符串转换为日期

  • 创建一个保存事务的ArrayList

  • 基于用户输入的迭代计数器

  • 一个循环,它循环用户预定义的数量,并向每次迭代添加一个新值,其中包含用户的下一个 int 和下一个字符串(通过日期格式化程序转换为日期)。foriterationsTransactionArrayList

  • 我将 ArrayList 输入到 Xirr 方法中。

试试这个:

//import java.text.SimpleDateFormat;

//import java.util.ArrayList;

//import java.util.Date;

//import java.util.Scanner;


public double xirr_issue5b() {

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

    Scanner sc = new Scanner(System.in);

    ArrayList<Transaction> trans = new ArrayList<Transaction>();

    int iterations = sc.nextInt();


    for(int k = 0; k < iterations; k++) {

        trans.add(new Transaction(sc.nextInt(), format.parse(sc.next())));

    }


    double rate = Xirr(trans).xirr();

    sc.close();


    return rate;

}


查看完整回答
反对 回复 2022-09-01
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信