【问题标题】:JAVA match string array to double arrayJAVA匹配字符串数组到双数组
【发布时间】:2020-03-05 02:36:27
【问题描述】:

我在完成我正在处理的 Java 项目的某个部分时遇到了问题。

这些是我制作的数组:

double [][] amortDB = new double[1000][4];

String [][] nameTable = new String[1000][6];

这些是说明:您将存储客户 ID 号、名字、姓氏、地址、手机 二维字符串数组中的数字和年龄。

您将存储客户 ID 号、贷款金额和贷款利率(作为 #.# number),以及所需的每月付款金额,以二维双数组形式显示

请注意,这里的想法是这两个数组“同步”起来。第一个客户 信息数组对应于贷款信息数组中的第一个客户,并且 等等

所以我遇到的麻烦是将每个数组的第一个位置相互匹配,因为客户 ID 应该在两者中匹配。用户应该能够使用扫描仪输入为两个数组中的每个要求输入任何字符串或双精度。我只是迷失了如何将双精度数组与字符串数组匹配?然后在匹配客户 ID 后,他们应该能够从该客户下输入的任何内容中调用其他信息。

非常感谢任何帮助!

【问题讨论】:

  • 注意这里的想法是这两个数组“同步”起来。 - 一个更好的方法是创建一个类而不是代表你的数据,然后有一个数组或这些对象的列表。
  • 我打算使用类,但项目仅限于不允许这样:/

标签: java arrays


【解决方案1】:

你的意思是这样的吗?有更优雅的方法可以解决这个问题,但作为一个基本示例,它可以工作。

    Map<Integer, Integer> idPositionMap = new HashMap<>();
    for (int nameTableIndex = 0; nameTableIndex < nameTable.length; nameTableIndex++) {
        String id = nameTable[nameTableIndex][0];
        if (id != null) {
            double nameTableId = Double.valueOf(id); // Acutal conversion of String to double.
            int amortDbIndex = findAmortDbIdIndex(amortDB, nameTableId);
            if (amortDbIndex != -1) {
                idPositionMap.put(nameTableIndex, amortDbIndex);
            }
        }
    }
    idPositionMap.forEach((nameTableIndex, amortDbIndex) -> System.out.println("Index at nameTable: " + nameTableIndex + " Index at amortDb: " + amortDbIndex));

    private static int findAmortDbIdIndex(double[][] amortDb, double searchId) {
    for (int amortDbIndex = 0; amortDbIndex < amortDb.length; amortDbIndex++) {
        double id = amortDb[amortDbIndex][0];
        if (id != 0 && id == searchId) {
            return amortDbIndex;
        }
    }
    return -1;
}

每个Id的行位置存储在idPositionMap中,nameTable的id位置为key,同一个id在amortDb中的匹配位置。

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2019-07-18
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多