【问题标题】:How to create an Array with 2 Arrays inside of different types Java如何在不同类型的Java中创建一个包含2个数组的数组
【发布时间】:2021-11-04 00:30:16
【问题描述】:

我有 2 个数组,一个是 String 类型,一个是 Int 类型。是否可以将这两个放入另一个数组中?

说明示例:

String[] grades = { A, B, C, D, E, F };
int[] marks = { 90, 80, 70, 60, 50 };

int[][] combined { grades, marks };

我需要能够通过键入组合[0][4](接收'E')等使用组合数组来单独解决它们。

如果可能的话,我将使用什么作为我的类返回类型?它当前设置为返回 int[][] 但这不起作用,因为字符串无法转换为 int。

我目前的理论是让它返回一个字符串数组并将我的整数转换为字符串,但这效率低下并且失去了很多功能,如果有人知道任何更聪明的方法,我会喜欢任何建议。

感谢您的宝贵时间

【问题讨论】:

    标签: java arrays string integer


    【解决方案1】:

    方法 1:您可以使用 2D 对象数组。

    int max = Math.max(grades.length,marks.length);

    示例:

    Object[][] objArr = new Object[max][2];
    objArr[0][0] = marks[0];
    objArr[0][1] = grades[0];
    

    数组看起来像 {90,A}

    要返回一个字符串,您可以获取成绩并将其转换为字符串

     return (String) obj[0][1];   // returns "A"
    

    方法 2:您可以使用 ascii 值作为成绩,并且可以将它们放在 2D 整数数组本身中。

    Integer[][] marksAndGrades = new Integer[max][2];
    marksAndGrades[0][0] = marks[0];
    marksAndGrades[0][1] = (int)grades[0].charAt(0);
    

    这里的数组看起来像 {90,65}

    根据分数返回成绩

    return String.valueOf((char)(int)marksAndGrades[0][1]);   // returns "A"
    

    【讨论】:

    • Java 中的二维数组不是矩阵,包含的数组不需要长度相等
    • @JeroenSteenbeeke :没有注意到给定的两个数组的长度不均匀。现在更正了帖子。
    【解决方案2】:

    您可以通过首先将数字数组从 int[] 更改为 Integer[],然后将组合数组更改为 Object[][] 来实现:

    String[] grades = { "A", "B", "C", "D", "E", "F" };
    Integer[] marks = { 90, 80, 70, 60, 50 };
    
    Object[][] combined = { grades, marks };
    

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2019-09-03
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多